We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[TOC]
Compiler
run
entry
Loader
Chunk
简化版:
初始化:启动构建,读取与合并配置参数,加载 Plugin,实例化 Compiler 编译:从 Entry 出发,针对每个 Module 串行调用对应的 Loader 去翻译文件的内容,再找到该 Module 依赖的 Module,递归地进行编译处理 输出:将编译后的 Module 组合成 Chunk,将 Chunk 转换成文件,输出到文件系统中
Webpack 的热更新又称热替换(Hot Module Replacement),缩写为 HMR。 这个机制可以做到不用刷新浏览器而将新变更的模块替换掉旧的模块。 HMR的核心就是客户端从服务端拉去更新后的文件,准确的说是 chunk diff (chunk 需要更新的部分),实际上 WDS 与浏览器之间维护了一个 Websocket,当本地资源发生变化时,WDS 会向浏览器推送更新,并带上构建时的 hash,让客户端与上一次资源进行对比。客户端对比出差异后会向 WDS 发起 Ajax 请求来获取更改内容(文件列表、hash),这样客户端就可以再借助这些信息继续向 WDS 发起 jsonp 请求获取该chunk的增量更新。 后续的部分(拿到增量更新之后如何处理?哪些状态该保留?哪些又需要更新?)由 HotModulePlugin 来完成,提供了相关 API 以供开发者针对自身场景进行处理,像react-hot-loader 和 vue-loader 都是借助这些 API 实现 HMR。
使用高版本的 Webpack 和 Node.js
高版本
多进程/多实例构建:HappyPack(不维护了)、thread-loader
多进程/多实例
压缩代码
图片压缩
缩小打包作用域
提取页面公共资源
DLL
充分利用缓存提升二次构建速度
Tree shaking
Scope hoisting
动态Polyfill
「吐血整理」再来一打Webpack面试题 掘金 - webpack面试题 2020年了,再不会webpack敲得代码就不香了
The text was updated successfully, but these errors were encountered:
No branches or pull requests
[TOC]
1. webpack的基本功能和工作原理
2. Webpack构建流程
Compiler
对象,加载所有配置的插件,执行对象的run
方法开始执行编译entry
找出所有的入口文件Loader
对模块进行翻译,再找出该模块依赖的模块,再递归本步骤直到所有入口依赖的文件都经过了本步骤的处理Loader
翻译完所有模块后,得到了每个模块被翻译后的最终内容以及它们之间的依赖关系Chunk
,再把每个Chunk
转换成一个单独的文件加入到输出列表,这步是可以修改输出内容的最后机会简化版:
3. Webpack 的热更新原理
Webpack 的热更新又称热替换(Hot Module Replacement),缩写为 HMR。 这个机制可以做到不用刷新浏览器而将新变更的模块替换掉旧的模块。
HMR的核心就是客户端从服务端拉去更新后的文件,准确的说是 chunk diff (chunk 需要更新的部分),实际上 WDS 与浏览器之间维护了一个 Websocket,当本地资源发生变化时,WDS 会向浏览器推送更新,并带上构建时的 hash,让客户端与上一次资源进行对比。客户端对比出差异后会向 WDS 发起 Ajax 请求来获取更改内容(文件列表、hash),这样客户端就可以再借助这些信息继续向 WDS 发起 jsonp 请求获取该chunk的增量更新。
后续的部分(拿到增量更新之后如何处理?哪些状态该保留?哪些又需要更新?)由 HotModulePlugin 来完成,提供了相关 API 以供开发者针对自身场景进行处理,像react-hot-loader 和 vue-loader 都是借助这些 API 实现 HMR。
4. 优化 Webpack 的构建速度
使用
高版本
的 Webpack 和 Node.js多进程/多实例
构建:HappyPack(不维护了)、thread-loader压缩代码
图片压缩
缩小打包作用域
提取页面公共资源
DLL
充分利用缓存提升二次构建速度
Tree shaking
Scope hoisting
动态Polyfill
5. 写 loader
参考
「吐血整理」再来一打Webpack面试题
掘金 - webpack面试题
2020年了,再不会webpack敲得代码就不香了
The text was updated successfully, but these errors were encountered: