前端Webpack知识体系 | 青训营笔记

52 阅读3分钟

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

为什么要学习Webpack?

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

课程内容

主要内容:

  • 什么是 Webpack
  • Webpack 打包核心流程
    • 示例
    • Entry => Dependencies Lookup => Transform => Bundle => Output
    • 关键配置项介绍
  • Loader 组件
  • Plugin 组件
  • 如何学习 Webpack
    • 入门级:学会灵活应用
    • 进阶:学会扩展 Webpack
    • 大师:源码级理解 Webpack 打包编译原理

课程目标

  • 理解 Webpack 的基本用法
  • 通过介绍 Webpack 功能、Loader 与 Plugin 组件设计,建立一个知识体系
  • 不会事无巨细,介绍 Webpack 所有
  • 也不是深入源码,讲解底层实现原理
  • 我会尽量不涉及复杂繁琐的概念,也希望同学们能持续集中精神,跟上课程进度。

什么是Webpack

前端项目由什么构成? ----资源

截屏2022-08-10 14.10.14.png

截屏2022-08-10 14.10.36.png

截屏2022-08-10 14.11.00.png

截屏2022-08-10 14.11.18.png

使用Webpack

使用Webapck - 示例

截屏2022-08-10 14.12.16.png

核心流程 --- 极度简化板

截屏2022-08-10 14.12.50.png

模块化 + 一致性

  1. 多个文件资源合并成一个,减少 http 请求数
  2. 支持模块化开发
  3. 支持高级 JS 特性
  4. 支持 Typescript、CoffeeScript 方言
  5. 统一图片、CSS、字体 等其它资源的处理模型6 - Etc...

那么,怎么使用Webpack

使用Webpack

截屏2022-08-10 14.15.09.png

使用Webpack - 流程类配置

截屏2022-08-10 14.17.17.png

使用Webpack - 配置总览

截屏2022-08-10 14.17.42.png

使用Webpack

截屏2022-08-10 14.18.09.png

使用Webpack - 处理css

截屏2022-08-10 14.18.35.png

截屏2022-08-10 14.18.50.png

使用Webpack

截屏2022-08-10 14.19.08.png

使用Webpack

问题:

使用Webpack - 接入Babel

截屏2022-08-10 14.21.11.png

截屏2022-08-10 14.21.25.png

使用Webpack

思考题:

使用Webpack - 生成HTML

截屏2022-08-10 14.25.26.png

截屏2022-08-10 14.25.41.png

使用Webpack

思考题:

使用Webpack - 工具线

截屏2022-08-10 14.30.53.png

使用Webpack - HMR

截屏2022-08-10 14.32.01.png

截屏2022-08-10 14.32.16.png 参考:mp.weixin.qq.com/s/cbYMpuc4h…

使用Webpack - Tree-Shaking

截屏2022-08-10 14.33.02.png

截屏2022-08-10 14.33.25.png

截屏2022-08-10 14.33.40.png

使用Webpack

截屏2022-08-10 14.33.54.png

进阶篇:理解Loader

问题:Webpack只认识JS

截屏2022-08-10 14.35.03.png

使用Loader

截屏2022-08-10 14.35.33.png

认识Loader:链式调用

截屏2022-08-10 14.36.07.png

认识Loader:其他特性

截屏2022-08-10 14.36.31.png 参考:mp.weixin.qq.com/s/TPWcB4MfV…

如何编写Loader

截屏2022-08-10 14.37.05.png 参考:mp.weixin.qq.com/s/TPWcB4MfV…

常见Loader

截屏2022-08-10 14.37.42.png

理解插件

思考题:

  • Loader输入是什么?要求的输出是什么?
  • Loader的链式调用是什么?如何串联多个Loader?
  • Loader中如何处理异步场景? 参考:mp.weixin.qq.com/s/TPWcB4MfV…

进阶篇:理解插件

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

很多知名工具,如:

  • VS Code.Web StormChromeFirefox
  • Babel.Webpack、Rollup、Eslint
  • Vue、Redux、Quill、Axios
  • 等等,都设计了所谓“插件”架构,为什么?

截屏2022-08-10 14.41.15.png 甚至,webpack本身的很多功能也是基于插件实现的

理解插件

截屏2022-08-10 14.42.01.png

截屏2022-08-10 14.42.14.png 用起来很简单,但写起来。。。

截屏2022-08-10 14.42.45.png

截屏2022-08-10 14.42.58.png

截屏2022-08-10 14.43.10.png 思考题:

参考:mp.weixin.qq.com/s/SbJNbSVzS…

小结

截屏2022-08-10 14.44.55.png 线上地址:gitmind.cn/app/doc/fac…

学习方法

截屏2022-08-10 14.45.34.png

知识点

截屏2022-08-10 14.45.49.png