webpack介绍

webpack介绍

基于nodejs的一个打包的工具

vue: npm run serve / npm run build ---- webpack

作用

      1. 优化:工程化、vue cli、react cli
      2. 打包: 将多个文件进行压缩,打包成一个文件 ---- 带宽
      3. 转换:es6,ts,jsx,tsx,less,sass,stylus

目标

1.从0开始搭建webpack
2.使用webpack来搭建vue和react的脚手架

webpack结构

1.入口:entry ---- vue src/main.js
2.出口:output ---- vue dist
3.插件:plugins ---- vue public/index.html -> dist/index.html
4.devServer: 开发者服务器配置 - vue vue.config.js
5.转换: loaders ---- vue es6语法、sass文件转换成为浏览器可以解析的文件
6.module
7.mode: 模式 ----》 开发环境 生成环境

node:
开发环境(development): 你写的代码环境

生产环境(production):打包后要上传到服务器的环境

webpack的配置

版本

webpack - 4.X ------- 免配置但可配置

webpack - 4.X以下版本 ------- 必须配置

0配置

不需要额外的配置 -》 默认的配置项

默认的入口就是 当前项目根目录下的 src 文件夹下的 index.js文件

默认的出口就是 dist 目录下打包的 main.js

安装模块

cnpm i webpack webpack-cli -g

webpack: webpack核心模块

webpack-cli: 执行webpack的相关命令行

webpack -v

说明:webpack的版本在4以上即为正常,如果为3,重新执行以上指令全局安装(webpack webpack-cli)即可

案例1 - demo1
d0fccaaacaa221e3980e8541aac1ebe9.png

将src文件夹下的 index.js文件 通过 webpack 指令打包至dist/main.js

      • 疑问1:入口代码简单,出口代码复杂,为什么说还是优化了呢?
      • 疑问2:打包时报了警告信息,如下图所示
        5a333f552e6d95ed79b0904f29083603.png

解决疑问2

运行指令1: - 未压缩

webpack --mode development

cecdf88586f5149613a8c8028aa5dc33.png

运行指令2: - 压缩

webpack --mode production

9e4a32bea29a84af653e98d5cd4a43eb.png

解决疑问1:如果你的模块化、组件化开发呢?

案例2:demo2
70696d31d49e0e548632d16cb4a6f773.png
faaf284b571296782233e53671f76f9c.png
57b525dc7eb92f51ca1ce73c1a5c817d.png

      • 疑问: 能不能打包多个入口? ==== 将多个文件打包成一个

案例3:demo3 ---- 多入口
159ea4706c7be552ad085f2304fa2190.png
3a41c31f5bea49c2d3fb8fdf4988e4ba.png

      • 疑问:不管是单入口还是多入口 ,打包的文件名字都叫做 dist/main.js,能不能改个名字名字呢?比如说 打包至 build/bundle.js

demo1: webpack --mode development --output build/bundle.js
88ceef06a5e9aa37e8d47b472c233c89.png

demo2:
ac3b0822bf2b2768fb3295c8489ec2d0.png

demo3:
0dfd171a7dbbfc4e926f639770ec42dd.png

      • 疑问:使用webpack是为了操作方便,但是现在每次运行的指令都很麻烦

案例4: demo4

npm init -y ----- 生成package.json的基本配置文件

scripts 选项中添加webpack的打包指令
8b7e080e06f6a1f950997fe6af2f1282.png

webpack的配置

案例5:demo5

创建webpack.config.js的配置文件,

// webpack 基于node,必须确保已安装node// 导出一个模块, 对象,添加一些选项(入口,出口,模式.....)const path = require('path');
module.exports = {
    mode: 'development', // production
    entry: './src/index.js', // 入口文件
    output: {
        // path: __dirname + '/build',
        path: path.resolve(__dirname, './') + '/build',
        filename: 'bundle.js'
    }
}

只需要在命令行里运行 webpack 指令即可

运行webpack指令时,该命令一定需要与webpack.config.js同级别

      • 疑问:webpack的配置文件一定得必须是 webpack.config.js文件吗?

案例6:demo6

webpack --config nz.config.js
be665242f0161210e414ea422d61051a.png

虽然可以更改 配置文件名称,但是一般不建议修改

      • 疑问:配置文件中的入口,如果出现多入口怎么办

案例7:demo7 - 多入口单出门 - 数组
c5ed45efe54c4dfc8a2702736db0e8a6.png

      • 疑问:如果是多入口多出口呢?

案例8: demo8- 多入口多出口 - 对象
306eece7a46ee5131364cac2856a2cda.png

      • 疑问:如果写一个通用形式的入口以及出口,适用于所有场合

案例9:demo9 -- 通用形式的写法
815b5c96b8385eb3c6259e340052e7b1.png

      • 疑问: 如果想要在打包时,先清空所有的内容,然后再打包呢?

案例10:demo10 -- 打包前先清空

通过配置webpack的插件实现

cnpm i clean-webpack-plugin -D
b9614c8f20fcc15089d7f45dd435de1c.png

案例11: demo11 -- 打包携带页面
通过配置webpack的插件实现

cnpm i html-webpack-plugin clean-webpack-plugin -D

cnpm i webpack webpack-cli -D

fa96fd7530142f8760526727e6b7ffaf.png
d09ce8d30174605a7a46be7f5934093c.png
1d26e24f6b12f111661fac3c108ba25b.png
4edb0bdd96dcdf03e2a734e9c0de2e2a.png

      • 默认会在dist目录下生成 index.html页面,如果想要换名字(一般不设置,采用的就是默认的名字)
        5a9df59309725e2adce4014d2bd029d5.png

      • 假设页面中有缓存的信息,清除缓存(有必要设置)
        71da68496baf3231780df96a86e3ec2a.png

      • 如果想要屏蔽自动引入js或者修改js引入的位置
        75091db55637f9b92f58e4000c242ed9.png

      • 如果项目中是多入口多出口时,需要自动引入导出的js文件,并且如果需要设定导入的顺序
        5e858abecb07cf64de4b77bfcdaba198.png
        068b6e071b025123693a610c0608eeac.png
        344eb78c9987e0add1ea78d76eba3a46.png

      • 模拟vue项目,添加动态的标题时

public/index.html
ef67b985d77f2b6a3bdbd5ba03237392.png
d145543d8f86d0f281b2fe5478856080.png
1cdea05e7d4205874408645beb1d30cd.png

dist目录下的文件index.html 浏览器打开
45713a5e5c68aa7decedee082843abfc.png
查看dist/index.html源码
6f7f0cdf6955030daa6bcad0f8cba18b.png

      • 如果想要清除注释语句、想要清除双引号、代码折叠去除空格

public/index.html
0cf4fad7507a71a50a821d270c13ca89.png

dist/index.html
cdc57ab10320eb6601661178ad522098.png
7aa779ba22dc7872314be1fb8b0d852b.png
230327abed4a343d14fe3cb0dc67469a.png

      • 移除空标签
        f6694a5824a440dcf91a8ec9f8c55361.png
        be538d25290a6e7665909773c52d6491.png
        961c29ce391664556bab752e0ab5f9d2.png
      •  文章来之吴大勋(大勋哥)

posted @ 2020-04-09 09:44  haccer  阅读(116)  评论(0)    收藏  举报