这是我参与「第四届青训营 」笔记创作活动的第8天
为什么要学习webpack
- 理解前端“工程化”概念、工具、目标
- 一个团队总要有几个人熟悉,某种程度上可以成为个人的核心竞争力
- 高阶前端的必经之路
1. 什么是webpack
前端项目有什么构成?——资源
webpack本质上是一种前端资源编译、打包工具
2. 使用webpack
核心流程
模块化+一致性
- 多个文件资源合并成一个,减少http请求数
- 支持模块化开发
- 支持高级JS特性
- 支持Typescript、CoffeeScript方言
- 同意图片、CSS、字体等其他资源的处理模型
- Etc···
使用Webpack
关于Webpack的使用方法,基本围绕“配置”展开,而这些配置大致可分为两类:
- 流程类:作用于流程中某个or若干个环节,直接影响打包效果的配置项
- 工具类:主流程之外,提供更多工程化能力的配置项。
流程类配置
配置总览
处理css
接入Babel
生成HTML
工具线
HMR
Tree-Shaking
树摇--用于删除Dead Code
3. 理解Loader
因为webpack只认识js
为了处理非标准JS资源,设计出资源翻译模块——Loader,用于将资源翻译为标准JS
使用Loader
认识Loader
链式调用
其他特性
编写Loader
常见Loader
4. 理解插件
插件架构精髓:对扩展开放,对修改封闭
首先,插件围绕“钩子”展开
钩子的核心信息:
- 时机:编译过程的特定节点,Webpack会以钩子形式通知插件此刻正在发生什么事情。
- 上下文:通过tapable提供的回调机制,以参数方式传递上下文信息。
- 交互:在上下文参数对象中附带了很多存在side effect的交互接口,插件可以通过这些接口改变