Webpack知识体系 | 青训营笔记

76 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 13 天,今天学习的是Webpack知识体系,将所学习的知识记录下来,以便时时巩固记忆。

学习的内容

  • 什么是Webpack
  • Webpack打包核心流程
  • Loader组件
  • Plugin组件
  • 如何学习Webpack

什么是Webpack

WebPack可以看做是模块打包机:它做的事情是,分析你的项目结构,找到JavaScript模块以及其它的一些浏览器不能直接运行的拓展语言(Scss,TypeScript等),并将其转换和打包为合适的格式供浏览器使用。

Webpack打包核心流程

  • 入口处理: 从"entry"文件开始,启动编译流程。
  • 依赖解析: 从"entry"文件开始,根据"require" or "import"等语句找到依赖资源。
  • 资源解析: 根据"module"配置,调用资源转移器,将非标准JS资源转译为JS内容。
  • 资源合并打包: 将转译后的资源内容合并打包为可直接在浏览器运行的JS文件。

Webpack配置:

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

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

Loader组件

常用的两种Loader组件

style-loader

用途:用于将css编译完成的样式,挂载到页面style标签上。需要注意loader执行顺序,style-loader放到第一位,因为loader都是从下往上执行,最后全部编译完成挂载到style上。

css-loader

用途:用于识别.css文件,处理css必须配合style-loader共同使用,只安装css-loader样式不会生效。

Plugin组件

钩子的核心信息:

  • 时机:编译过程的特定节点,Webpack会以钩子形式通知插件此刻正在发生什么事情。
  • 上下文:通过tapable提供的回调机制,以参数方式传递上下文信息。
  • 交互:在上下文参数对象中附带了很多存在side effect的交互接口,插件可以通过这些接口改变。

如何学习Webpack

webpack.png