Webpack 知识体系 | 青训营笔记

31 阅读2分钟

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

课程重点

  1. Webpack 的本质
  2. Webpack 定义解析
  3. Webpack 优势

为什么要学习webpack

  • 理解前端“工程化”概念、工具、目标
  • 一个团队总要有那么几个人熟悉Webpack,某种程度上可以成为个人的核心竞争力
  • 高阶前端必经之路

什么是Webpack

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

  • 多份资源文件打包成一个Bundle
  • 支持Bundle、Eslint、TS、CoffeScript、Less、Sass
  • 支持模块化处理CSS、图片等资源文件
  • 支持HMB+开发服务器
  • 支持持续监听、持续构建
  • 支持代码分离
  • 支持Tree-shaking
  • 支持Sourcemap...

image.png

image.png

image.png

使用Webpack

示例:

image.png 核心流程————极度简化版

image.png 模块化和一致性

image.png

怎么使用Webpack

关于Webpack的使用方法,基本都围绕“配置” 展开,而这些配置大致可划分为两类:

  • 流程类:作用于流程中某个or若干个环节,直接影响打包效果的配置项
  • 工具类:主流程之外,提供更多工程化能力的配置项

流程类配置

image.png 配置总览

image.png 接入Babel

image.png 生成HTML

image.png 工具线

image.png HMR

image.png

image.png Tree-Shaking

image.png 其他工具

image.png

理解Loader

Webpack只认识JS,为了处理非标准JS资源,设计出资源翻译模块————Loader用于将资源翻译为标准JS

image.png

认识Loader:链式调用

  • less-loader:实现less=>css的转换
  • css-loader:将CSS包装成类似module.exports = "${css}"内容,包装后的内容符合JavaScript语法
  • style-loader:将css模块包进require语句,并在运行时调用injectStyle等函数将内容注入到页面的style标签

Loader其他特性

  • 链式执行
  • 支持异步执行
  • 分normal、pitch两种模式

image.png

如何编写Loader

image.png 常见Loader

image.png

理解插件

插件是什么?为什么这么设计?

image.png

image.png 甚至,Webpack本身的很多功能也是基于插件实现的。

理解插件

image.png

image.png 写插件

  • 首先:插件围绕“钩子”展开

image.png

image.png

image.png

学习方法

image.png 面试需要掌握到的程度:

image.png