Webpack 从 4.6.0+ 开始支持 prefetch,用法如下:
使用 prefetch
const loadAsync = () =>
import(/* webpackChunkName:"async" */ /* webpackPrefetch: true */ './async');
异步模块里面依赖了异步模块并且使用了 webpackPrefetch 才会在打包出来的 runtime 中增加 prefetch 的逻辑。
要理解这个逻辑先把整个 webpack runtime 梳理一遍。
webpack runtime 处理异步 chunk 的逻辑
这里简单总结为一个图:

webpack runtime 处理异步加载 import() 这种是在 __webpack_require__.e 中。
__webpack_require__.e 内部通过 reduce 把多个挂载在 __webpack_require__.f 对象下的处理函数迭代一次,比如
__webpack_require__.f.j通过 head 插入 script 方式加载 js,里面的逻辑有点复杂__webpack_require__.f.miniCSS加载 css__webpack_require__.f.prefetch处理 prefetch
可以把 webpack 通过 reduce
深入理解webpack 5 prefetch runtime机制

本文介绍了Webpack 5中prefetch runtime的工作原理,详细梳理了webpack runtime处理异步chunk的逻辑,并通过实例解释了如何在打包时分析并添加prefetch模块到chunkToChildrenMap中,最终由runtime通过link rel prefetch进行预加载。
最低0.47元/天 解锁文章
1753

被折叠的 条评论
为什么被折叠?



