1.学习webpack的收益:
理解前端“工程化”概念、工具、目标
一个团队总要有几个人熟悉webpack,某种程度上可以成为个人的核心竞争力
它是高阶前端必经之路
2.webpack:
本质上是一种前端资源编译、打包工具。它可以帮助我们进行模块化,并且处理模块之间的复杂关系
3.打包:
就是将webpack种的各种资源模块进行打包合并成一个或者多个包(Bundle)。在打包的过程种,还可以对资源进行处理。
3.webpack.config.js:
entry是webpack的一个入口
output是weboack打包后文件所放置的位置。
4.核心流程:
入口处理(Get Start):从entry文件开始,启动编译流程
依赖解析(Dependencies Lookup):从‘entry’文件开始,根据‘require’or‘import’等语句找到依赖资源
资源解析(transform):根据‘module’配置,调用资源转移器,将png、css等非标准JS资源转译为JS内容
资源合并打包(Combine Assests):将转译后的资源内容合并打包为可直接在浏览器运行的JS文件
5.Webpack配置分为两类:
流程类:作用域流程中某个or若干个环节,直接影响打包效果配置项
工具类:主流程之外,提供更多工程化能力的配置项。
6.工具类配置项
HMR(Hot Module Replacement)模块热替换:写的代码能立刻更新到浏览器,且浏览器不需要刷新。
Tree-Shaking树摇:用于删除 Dead Code
7.webpack做过缓存优化:
执行加载过的模块不会在执行第二次。执行结果会缓存才内存中,当某个模块第二次被访问时会直接去内存中读取被缓存的返回值
8.Loader:
在开发Loader的时,需要保持职责的单一性。因为一个Loader只能完成一种转换。多个Loader会以链式的顺序处理内容
Loader有同步和异步之分
Webpack会默认缓存所有Loader的处理结果。
9.模块化和一致性:
多个文件资源合并成一个,减少http请求数目
支持模块化开发
支持高级JS特性
支持Typescript、coffeeScript语言
同意图片、css、字体等其他资源的处理模型
10。module:
是webpack资源处理的基本单位,可以认为webpack对资源的路径解析、读入、转译、分析、打包输出。所有的操作都是围绕着module展开的