webpack原理

是什么

webpack是JavaScript的模块打包工具,通过分析模块之间的依赖,将所有模块打包成一份或者多份代码包。

 

工作流程 

1,初始化参数,初始化Compiler对象,从配置文件和shell 语句读取参数

2,开始编译,加载所有配置的插件

3,确定所有入口文件件

4,编译模块

5,根据模块之间的依赖关系组装成chunk

6,将组装好的chunk在配置好的输出路径里写入

关键属性

1,entry,入口文件,一起文件的起点

2,Output,出口地址,打包后的文件放置的位置

3,Module,webpack的处理的任意文件都可以称作module,webpack可以通过配置不同的loader对各个模块进行加载加工和打包

4,Chunk,

      a,代码块,入口文件引用其他模块,模块依赖在引用模块,最终形成一个Chunk

      b,chunk与bundle不同的地方在于,chunk描述的是打包过程中代码块,而bundle则描述的是打包结果的代码块,而bundle对应chunk是可能有多个的

      c,每个entry的入口都能产生一个chunk,比如单页面应用就是一个chunk,而多页面应用则是多个chunk

      d,异步加载模块也产生新的chunk,实际上异步加载就是为了避免chunk本身太大,导致加载缓慢,vue中常见的异步加载有router懒加载,组件按需加载

      e,代码分割产生的chunk,这个使用在多页面应用的,经常在不同页面重复引用同一个模块,若直接打包会导致几条chunk上重复代码,这个时候splitChunk则会将相同的代码块抽离合并,再由不同的chunk引用

     参考:Webpack 理解 Chunk

 

5,Loader,这是用来加载模块的,webpack本身只认识js和json,由此加载其他类型的文件就需要loader来转换加工让js识别

6,Plugin,这是webpack的拓展插件,这里是拓展功能,例如代码的压缩,根据模板生成html代码,热更新,gzip压缩等等

posted @ 2021-09-08 09:59  来吃点代码  阅读(356)  评论(0编辑  收藏  举报