webpack核心用法,为什么要使用webpack
一:为什么使用webpack
1. 代码转换、文件优化、代码分割、模块合并、自动刷新、等等
2. webpack上手
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<!--
模块化: -->
<script src="../dist/main.js"></script>
</body>
</html>
使用:
1安装webpack
npm install webpack webpack-cli -g
##### 2webpack初体验
在创建项目的使用,我们回顾一下我们写vue和react项目,是不是都有一个模块化的思想,将一个方法,一个组件单独文件中进行处理,在引入到我们想要的文件中。
案例目录:webpack1
问题:在文件的浏览器中不用使用这些模块化
解决方法:使用webpack进行打包处理
在终端执行 webpack =>生成 dist目录
代码:webpack2
3webpack的配置
(1) 在项目目录中创建一个webpack.config.js文件
const path = require('path'); module.exports = {
entry: './src/index.js',
output: {
path: path.resolve(__dirname, 'dist'), //不是绝对路径
filename: 'index.js',
},
};
(2) 我们要向和vue,react,通过命令产生打包文件
"build":"webpack"
4:webpack主文件(依赖图)
就是这个src/index.js 文件
这个文件就是vue.中的main.js文件,这个里面引入的所有代码都会被执行
5:处理loader
//1webpack为什么需要loader
//就是webpack处理的文件,不是js,文件类型,都需要loader来进行处理
//2loader是什么?
//就是用来辅助webpack,解析不是js文件的方法
案例一:处理css-loader
//1 创建元素
//例子登录
function Login(){
//创建元素
let oH = document.createElement('h2')
oH.innerHTML = '你好同学' //添加内容
oH.className ='title' return oH
}
//放到body上面去
document.body.appendChild(Login())
2创建css样式
// 引入我们的css
import '../css/login.css' //报错因为webpack不能处理 css为文件 //例子登录
function Login(){
//创建元素
let oH = document.createElement('h2')
oH.innerHTML = '你好同学' //添加内容
oH.className ='title' return oH
}
//放到body上面去
document.body.appendChild(Login())
解决方法
1 安装css-loader
npm install css-loader
2 配置webpack解析的文件
module: {
rules: [
{ test: /\.css$/, use: 'css-loader' } ],
},
发现页面样式没有效果,就是我们刚刚的配置,让webpack,可以解析css文件,但是没有使用
在安装一个loader =》style -loader
module: {
rules: [
// { test: /\.css$/, use: 'css-loader' } //单个
//注意又有一个问题: use执行的顺序 从右向做
{ test: /\.css$/, use:[ 'style-loader','css-loader'] } ],
},
案例处理less文件
import '../css/login.less'
//创建了一个标签
function ohs(){
let oh = document.createElement('h2')
oh.innerHTML ='你好'
oh.className ='title'
return oh
}
//webpack 只能处理.js 文件 =》其他的文件不能处理 // 提供的loader?这个loader是什么?loader作用? //就是一个webpack中用来解析成webpack认识的文件
//例子=》css
//安装 css-loader
//配置 document.body.appendChild(ohs())
需要安装less-loader ,webpack才能解析这个文件
module: {
rules: [
// { test: /\.css$/, use: 'css-loader' } //单个
//注意又有一个问题: use执行的顺序 从右向做
{ test: /\.css$/, use:[ 'style-loader','css-loader'] },
//注意这里的解析方式
// less=>css =>在通过style-loader使用样式
{ test: /\.less$/, use:[ 'style-loader','css-loader','less-loader'] }
],
},
6:webpack中babel的使用
作用:就是将es6的语法变成 es5的语法
案例 将es6箭头函数变成es5的语法
var title= '小明'
const show =()=>{
console.log(title);
} show()
1安装babel
npm install --save-dev @babel/core @babel/cli
npm install babel-loader
npm install @babel/plugin-transform-arrow-functions
2配置规则
// 处理js文件
mode:'development',
{
test: /\.js$/,
// 需要使用babel提供的几个插件
// use:[ 'babel-loader']
use: {
loader: "babel-loader",
options: { //选项
plugins: [
'@babel/plugin-transform-arrow-functions' ]
} }
}
7:webpack中plugins的使用(插件的使用)
我们的这个模板是需要自己写的,=》index.html,
我们通过使用插件自动创建模板
1安装插件
npm install html-webpack-plugin
2webpack配置插件
//配置插件=>在modult.exports上添加一个属性 plugins
let HtmlWebpackPlugin = require('html-webpack-plugin') //类
plugins:[ //数组可以放多个
new HtmlWebpackPlugin()
]
8:webpack加载vue文件
1 安装相关依赖
npm install vue-template-compiler
npm install vue@2.6.14
npm install vue-loader@15.9.8
2 创建根组件
<template>
<div class="title">
<h2>{{msg}}</h2>
</div>
</template> <script>
export default {
data(){
return{
msg:'你好同学'
}
}
}
</script> <style scoped lang='less'>
.title{
color:red;
}
</style>
3在index.js中创建vue实例
//main.js入口主文件 import Vue from 'vue'
import App from './App.vue' new Vue({
render:h=>h(App)
}).$mount('#app')
4配置解析vue-loader
const VueLoaderPlugin = require('vue-loader/lib/plugin')
{ test: /\.vue$/, use: ['vue-loader'] },
],
//配置插件
plugins:[
new HtmlWebpackPlugin(),
new VueLoaderPlugin()
]
webpack 我们需要掌握的知识:
1 知道webpack 作用:
2知道微博pack 使用 loader 和插件
3 你在项目中有没有配置webpack, 配置过
1)代理 devServer
2) 通过webpack 处理性能优化的 =》 js ,css , 图片,等等
4webpack 执行流程
webpack核心用法,为什么要使用webpack的更多相关文章
- 手写webpack核心原理,再也不怕面试官问我webpack原理
手写webpack核心原理 目录 手写webpack核心原理 一.核心打包原理 1.1 打包的主要流程如下 1.2 具体细节 二.基本准备工作 三.获取模块内容 四.分析模块 五.收集依赖 六.ES6 ...
- webpack核心模块tapable用法解析
前不久写了一篇webpack基本原理和AST用法的文章,本来想接着写webpack plugin的原理的,但是发现webpack plugin高度依赖tapable这个库,不清楚tapable而直接去 ...
- webpack进阶用法你都get到了么?
如何消除无用代码:打包自己的私有js库:实现代码分割和动态import提升初次加载速度:配置eslint规范团队代码规范:打包异常抓捕你都get到了么? 摇树优化:Tree Shaking webpa ...
- webpack基本用法及原理(10000+)
1 webpack是什么 所有工具的出现,都是为了解决特定的问题,那么前端熟悉的webpack是为了解决什么问题呢? 1.1 为什么会出现webpack js模块化: 浏览器认识的语言是HTML,CS ...
- Webpack 核心开发者 Sean Larkin 盛赞 Vue
dev.io 近日邀请了 Webpack 核心开发者 Sean Larkin 回答开发者提问,其中几个问提比较有意思,和掘金的小伙伴们分享一下. 先上点前菜: 有一个开发者问 Sean 如何成为一个热 ...
- [js高手之路]深入浅出webpack教程系列2-配置文件webpack.config.js详解(上)
[js高手之路]深入浅出webpack教程系列索引目录: [js高手之路]深入浅出webpack教程系列1-安装与基本打包用法和命令参数 [js高手之路]深入浅出webpack教程系列2-配置文件we ...
- webpack入门和实战(一):webpack配置及技巧
一.全面理解webpack 1.什么是 webpack? webpack是近期最火的一款模块加载器兼打包工具,它能把各种资源,例如JS(含JSX).coffee.样式(含less/sass).图片等都 ...
- [js高手之路]深入浅出webpack教程系列3-配置文件webpack.config.js详解(下)
本文继续接着上文,继续写下webpack.config.js的其他配置用法. 一.把两个文件打包成一个,entry怎么配置? 在上文中的webpack.dev.config.js中,用数组配置entr ...
- 【Webpack的使用指南 02】Webpack的常用解决方案
说是解决方案实际上更像是webpack的插件索引. 写这一篇的目的是为了形成一个所以,将来要用时直接来查找即可. 索引目录 1.自动构建HTML,可压缩空格,可给引用的js加版本号或随机数:html- ...
- webpack从零开始第1课:安装webpack和webpack-dev-server
原文地址:https://segmentfault.com/a/1190000012536871 webpack目录 第1课: 安装webpack和webpack-dev-server 第2课: 配置 ...
随机推荐
- 云原生之旅 - 14)遵循 GitOps 实践的好工具 ArgoCD
前言 Argo CD 是一款基于 kubernetes 的声明式的Gitops 持续部署工具. 应用程序定义.配置和环境都是声明式的,并受版本控制 应用程序部署和生命周期管理都是自动化的.可审计的,并 ...
- 篇(18)-Asp.Net Core入门实战-文章管理之文章内容管理(下拉框二级结构递归)
篇(18)-Asp.Net Core入门实战-文章管理之文章内容管理(下拉框二级结构递归实现) 文章管理是CMS系统的核心表之一,存储文章内容,特点就是字段端,属性多,比如是否标识为热点.推荐等属性, ...
- 自动增加 Android App 的版本号
一般的 C# 应用程序中都有一个 AssemblyInfo.cs 文件,其中的 AssemblyVersion attribute 就可以用来设置该应用程序的版本号.譬如, [assembly: As ...
- Shell及Linux常见易错题目题库-Shell/Linux-选择、简答、判断、编程
1.以下不合法的shell头是(不合法指运行会报错)( ) A. #!/bin/bash B. #-/bin/bash C. !#/bin/bash 答案:C 2.if [ $2 -a $2 = ...
- JavaEE Day02MySQL
今日内容 数据库的基本概念 MySQL数据库软件 安装 卸载 配置 SQL语句 一.数据库的基本概念 1.数据库DataBase,简称DB 2.什么是数据库? 用于存储和管理数据的仓库 ...
- 《HTTP权威指南》 – 11.验证码和新鲜度
服务器应当告知客户端能够将内容缓存多长时间,在这个时间内就是新鲜的.服务器可以用这两个首部之一来提供信息: Expires(过期) Cache - Control(缓存控制) Expires首部 规定 ...
- 安装es可视化软件Kibana
一 Kibana介绍 Kibana 是一款开源的数据分析和可视化平台,它是 Elastic Stack 成员之一,设计用于和 Elasticsearch 协作. 您.可以使用 Kibana 对 Ela ...
- Karmada多云多集群生产实践专场圆满落幕
摘要:CNCF Karmada社区Cloud Native Days China 2022南京站成功举办. 本文分享自华为云社区<Karmada多云多集群生产实践专场圆满落幕|Cloud Nat ...
- DenseNet 论文解读
目录 目录 摘要 网络结构 优点 代码 问题 参考资料 摘要 ResNet 的工作表面,只要建立前面层和后面层之间的"短路连接"(shortcut),就能有助于训练过程中梯度的反向 ...
- Lombok介绍和配置
什么是Lombok Lombok是一个Java库,能自动插入编辑器并构建工具,简化Java开发. 官网: https://www.projectlombok.org/ Lombok的作用 通过 添加注 ...