From c7ec8a7a3efc7b8270b80bc6c0c50396c7006693 Mon Sep 17 00:00:00 2001 From: hojas Date: Tue, 9 Jan 2024 17:33:22 +0800 Subject: [PATCH] update docs --- .vitepress/nav.ts | 2 +- .vitepress/sidebar.ts | 7 +-- src/docs/engineering/vite.md | 9 +++ src/docs/engineering/webpack-loader.md | 48 +++++++++++++++ src/docs/engineering/webpack-plugin.md | 32 ++++++++++ src/docs/engineering/webpack.md | 74 +++++++++++++++-------- src/docs/engineering/webpack/flow.png | Bin 16605 -> 0 bytes src/docs/engineering/webpack/webpack.png | Bin 22644 -> 0 bytes 8 files changed, 142 insertions(+), 30 deletions(-) create mode 100644 src/docs/engineering/vite.md create mode 100644 src/docs/engineering/webpack-loader.md create mode 100644 src/docs/engineering/webpack-plugin.md delete mode 100644 src/docs/engineering/webpack/flow.png delete mode 100644 src/docs/engineering/webpack/webpack.png diff --git a/.vitepress/nav.ts b/.vitepress/nav.ts index f1ba2d0..6d1b0f1 100644 --- a/.vitepress/nav.ts +++ b/.vitepress/nav.ts @@ -17,7 +17,7 @@ export const nav: DefaultTheme.NavItem[] = [ // { text: 'Vue', link: '/vue' }, // ], // }, - // { text: '前端工程化', link: '/engineering' }, + { text: '前端工程化', link: '/engineering' }, { text: '浏览器原理', link: '/browser' }, // { text: '前端框架', link: '/frameworks' }, // { text: '前端工程化', link: '/engineering' }, diff --git a/.vitepress/sidebar.ts b/.vitepress/sidebar.ts index 0d4d7ae..7d5e12e 100644 --- a/.vitepress/sidebar.ts +++ b/.vitepress/sidebar.ts @@ -42,10 +42,9 @@ export const sidebar: DefaultTheme.Sidebar = { { text: '工程化', items: [ - { - text: 'Webpack', - link: '/engineering/webpack', - }, + { text: 'Webpack', link: '/engineering/webpack' }, + { text: 'Webpack Loader', link: '/engineering/webpack-loader' }, + { text: 'Webpack 插件', link: '/engineering/webpack-plugin' }, ], }, ], diff --git a/src/docs/engineering/vite.md b/src/docs/engineering/vite.md new file mode 100644 index 0000000..8b87186 --- /dev/null +++ b/src/docs/engineering/vite.md @@ -0,0 +1,9 @@ +--- +title: vite 原理 +--- + +# vite 原理 + +Vite 是一个基于浏览器原生 ESM 的构建工具,它省略了开发环境的打包过程,利用浏览器去解析 imports,在服务端按需编译返回。同时,在开发环境拥有速度快到惊人的模块热更新。 + +Vite 的工作原理可以分为以下几个步骤: diff --git a/src/docs/engineering/webpack-loader.md b/src/docs/engineering/webpack-loader.md new file mode 100644 index 0000000..a763905 --- /dev/null +++ b/src/docs/engineering/webpack-loader.md @@ -0,0 +1,48 @@ +--- +title: webpack loader 详解 +--- + +# webpack loader 详解 + +## 什么是 loader + +loader 用于对模块的源代码进行转换。loader 可以使你在 import 或 "load(加载)" 模块时预处理文件。因此,loader 类似于其他构建工具中“任务(task)”,并提供了处理前端构建步骤的得力方式。loader 可以将文件从不同的语言(如 TypeScript)转换为 JavaScript 或将内联图像转换为 data URL。loader 甚至允许你直接在 JavaScript 模块中 import CSS 文件! + +loader 本质上是导出为函数的 JavaScript 模块。loader runner 会调用此函数,然后将上一个 loader 产生的结果或者资源文件传入进去。函数中的 this 作为上下文会被 webpack 填充,并且 loader runner 中包含一些实用的方法,比如可以使 loader 调用方式变为异步,或者获取 query 参数。 + +## loader 的执行顺序 + +1. 前置 Loader(pre loader) +2. 普通 Loader(loader) +3. 内联 Loader(inline loader) +4. 后置 Loader(post loader) + +相同类型的 Loader,执行顺序是从右到左,从下到上。 + +**使用方式:** + +1. 配置文件中配置:pre、normal、post +2. 内联方式:在 import 语句中显示指定使用 + +## loader 的类型 + +1. 同步 Loader +2. 异步 Loader +3. Raw Loader +4. Pitching Loader + +**同步 Loader** + +同步 loader 会在 webpack 构建时立即执行,并将处理后的结果返回给 webpack。同步 loader 的执行速度快,但可能会阻塞 webpack 构建进程。 + +**异步 Loader** + +异步 loader 会在 webpack 构建时异步执行,并将处理后的结果通过 promise 返回给 webpack。异步 loader 的执行速度慢,但不会阻塞 webpack 构建进程。 + +**Raw Loader** + +raw loader 不会对资源文件进行任何处理,而是将资源文件的内容原样返回给 webpack。raw loader 通常用于将资源文件作为模块导入。 + +**Pitching Loader** + +pitching loader 会将处理后的结果传递给下一个 loader 之前,执行一些额外的逻辑。pitching loader 通常用于处理资源文件的依赖关系。 diff --git a/src/docs/engineering/webpack-plugin.md b/src/docs/engineering/webpack-plugin.md new file mode 100644 index 0000000..3c2bba4 --- /dev/null +++ b/src/docs/engineering/webpack-plugin.md @@ -0,0 +1,32 @@ +--- +title: webpack 插件 +--- + +# webpack 插件 + +插件是 webpack 的支柱功能。Webpack 自身也是构建于你在 webpack 配置中用到的相同的插件系统之上! + +插件目的在于解决 loader 无法实现的其他事。 + +插件向第三方开发者提供了 webpack 引擎中完整的能力。使用阶段式的构建回调,开发者可以在 webpack 构建流程中引入自定义的行为。创建插件比创建 loader 更加高级,因为你需要理解 webpack 底层的特性来处理相应的钩子,所以请做好阅读源码的准备! + +webpack5的插件是一个类,它继承自 webpack.Plugin 类。webpack.Plugin 类提供了一些钩子方法,插件可以通过这些钩子方法来执行自己的逻辑。 + +webpack5 的插件原理可以概括为以下几个步骤: + +1. webpack 在构建阶段,会根据配置文件中的插件列表,创建插件实例 +2. webpack 会为每个插件实例调用 apply() 方法,并传入 compiler 对象作为参数 +3. 插件实例会在 apply() 方法中执行自己的逻辑 +4. webpack 会将插件实例的返回值作为钩子方法的参数 + +插件可以通过钩子方法来执行自己的逻辑。 + +**webpack5提供了以下钩子方法:** + +1. apply():在插件实例创建后调用 +2. init():在插件实例初始化后调用 +3. preCompile():在编译模块之前调用 +4. compile():在编译模块时调用 +5. postCompile():在编译模块之后调用 +6. emit():在打包文件之前调用 +7. normalModuleFactory():在创建模块工厂时调用 diff --git a/src/docs/engineering/webpack.md b/src/docs/engineering/webpack.md index 152386c..317c54d 100644 --- a/src/docs/engineering/webpack.md +++ b/src/docs/engineering/webpack.md @@ -1,48 +1,72 @@ --- -title: webpack +title: webpack 原理 --- -# webpack +# webpack 原理 -webpack 的作用是将源代码编译(构建、打包)成最终代码。 +## 核心概念 -webpack 打包过程可以分为三步: +1. Entry +2. Output +3. Loader +4. Plugin +5. Mode -1. 初始化 -2. 编译 -3. 输出 +详情查看文档:https://webpack.js.org/concepts/ -## 初始化 +## 编译过程 -初始化时,webpack 会将 CLI 参数、配置文件、默认配置等进行合并,形成最终的配置对象。 +1. 初始化阶段 +2. 构建阶段 + 1. 创建模块 + 2. 依赖收集 + 3. 模块编译 + 4. chunk 分割 +3. 生成阶段 +4. 输出阶段 -## 编译 +### 一、初始化阶段 -**1. 创建 chunk** +在初始化阶段,webpack 会根据用户的配置文件创建一个 compiler 对象。compiler 对象是 webpack 的核心,它负责整个打包过程的控制。 -chunk 是 webpack 内部构建过程中的一个概念,译为`块`,它表示通过某个入口找到的所有依赖的统称。 +### 二、构建阶段 -每个 chunk 都有至少两个属性: +构建阶段是 webpack 打包流程中最重要的阶段。在构建阶段,webpack 会根据用户的配置文件,对源代码进行解析、编译、优化等处理,最终生成可执行的代码。 -1. name: 默认为 main -2. id: 唯一编号,开发环境和 name 相同,生产环境为从 0 开始的数字 +构建阶段可以分为以下几个步骤: -**2. 构建所有依赖模块** +1. 创建模块 -![webpack](./webpack/webpack.png) +在创建模块阶段,webpack 会根据入口文件的内容,创建一个个模块对象。模块对象包含了模块的名称、路径、依赖等信息。 -**3. 产生 chunk assets** +2. 依赖收集 -在第二步完成后,chunk 中会产生一个模块列表,列表中包含了模块id和模块转换后的代码。 +在依赖收集阶段,webpack 会根据模块的依赖关系,将所有相关的模块都收集到一起。 -**4. 合并chunk assets** +3. 模块编译 -将多个 chunk 的 assets 合并到一起,并产生一个总的 hash。 +在模块编译阶段,webpack 会根据用户配置的 loader,对每个模块进行编译。loader 可以对模块的代码进行转换、压缩、优化等处理。 -## 输出 +4. chunk 分割 -此步骤非常简单,webpack 将利用 node 中的 fs 模块(文件处理模块),根据编译产生的总的 assets,生成相应的文件。 +在 chunk 分割阶段,webpack 会根据模块的使用情况,将模块分割成多个 chunk。chunk 是 webpack 打包输出的最小单元。 -## 总过程 +### 三、生成阶段 -![webpack flow](./webpack/flow.png) +在生成阶段,webpack 会根据 chunk 的类型,生成相应的输出文件。例如,js 文件会生成 js 文件,css 文件会生成 css 文件。 + +### 四、输出阶段 + +在输出阶段,webpack 会将生成的文件输出到指定的目录。 + +### 什么是 Compiler ? + +Compiler 继承自 Tapable,是 Webpack 的整个生命周期管理,代表了完整的 Webpack 环境配置。 + +每个 Webpack 的配置,对应一个 Compiler 对象,记录了 Webpack 的 options、loader 和 plugin 等信息,并且通过的 Hook 机制管理整个打包流程的生命周期。 + +### 什么是 Compilation ? + +Compilation 也继承自 Tapable,代表了一次资源版本构建,包含了当前的模块资源、编译生成资源、变化的文 件、以及被跟踪依赖的状态信息。 + +每次构建过程都会产生一次 Compilation,比如我们启动 watch 功能的时候,每当检测到一个文件变化,就会重新创建一个新的 Compilation,从而生成一组新的编译资源。 diff --git a/src/docs/engineering/webpack/flow.png b/src/docs/engineering/webpack/flow.png deleted file mode 100644 index 967228d4985cd9096aa9e6daeeb779ff62718e5d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16605 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 nKglfT3Pq)YF-oleg)Hg!0V?)CG_n@)