webpack知识体系 | 青训营笔记

88 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第13天

  • 某个程度上可以成为个人的核心竞争力
  • 高阶前端必经之路

webpack由来

手动管理资源时,缺点:

  1. 依赖手工——>如引入多个script标签——>过程繁琐

  2. 代码文件之间有依赖——>需严格按依赖顺序书写

  3. 开发与生产环境一致——>难以接入TS或JS新特性

  4. 比较难接入Less、Sass等工具

  5. JS、图片、CSS资源管理模型不一致

——>出现许多工程化工具

webpack本质上是一种前端资源编译、打包工具

使用webpack

简单实例

  1. 安装依赖

npm i -D webpack webpack-cli

  1. 配置文件
module.exports={
	entry:'main.js',
	output:{
		filename:"[name].js",
		path:path_join(__dirname,"./dist"),
	},
	module:{
		rules:[{
			test:/.less$/i,
			use:['style_loader','css-loader','less-loader']
		}]
	}
}
  1. 执行编译命令

npx webpack

核心流程

入口处理——>依赖解析——>资源解析——>资源合并打包

模块化+一致性

使用方法——>围绕“配置”展开

配置总览

流程类配置

作用于流程中某个or若干个环节,直接影响打包效果的配置项

工具类配置

主流程之外,提供更多工程化能力的配置项

实例

处理js文件

接入babel

babel——>js代码转译的工具

\

处理css文件

处理less文件

自动生成html

工具线

HMR 模块热替换

tree-shaking 树摇

删除一些没有用到的代码 (模块导出,但未被其他模块使用)

开启

其他工具:

  • 缓存
  • sourcemap
  • 性能监控
  • 日志
  • 代码压缩
  • 分包

理解loader

起因:webpack只认识js代码

内容的转化——>将非标准JS资源转换为标准JS资源

特点

链式调用

支持异步执行

分normal、pitch两种模式

如何编写loader

常见loader

理解插件

——> 插件:对拓展开放,对修改封闭

使用实例

理解

插件围绕钩子展开

学习建议

思考

image.png

学习资料

css-loader

webpack:如何编写loader

style-loader

image.png

学习资料

image.png

学习资料

image.png

image.png

image.png

学习资料

webpack插件架构

webpack核心原理

其他学习资料

webpack:HMR原理全解析