webpack 中 webpackPreload 和 webpackPrefetch
本文最后更新于:2022年4月22日 上午
webpack 中 webpackPreload 和 webpackPrefetch 可以让我们对一些模块进行预加载及预获取
webpackChunkName
在介绍 webpackPreload 和 webpackPrefetch 之前,我们先介绍一下 webpackChunkName
webpackChunkName 可以定义我们 chunk 的名字
srcexport function sum(num1, num2){
return num1 + num2;
}src/index.jsimport(
/* webpackChunkName:'bar' */
"./bar"
).then(({sum: sum }) => {
console.log('webpackPreload: ',sum(1,2));
});执行打包命令
yarn build可以看到以下文件,我们刚刚引入的 bar.js 在打包后的加上了前缀
webpackPreload 预加载
预加载 会在当前模块加载时立即以并行的方式加载该模块
src/index.jximport(
/* webpackChunkName:'bar' */
/* webpackPreload: true */
"./bar"
).then(({sum: sum }) => {
console.log('webpackPreload: ',sum(1,2));
});可以看到我们的 bar 文件可以被正常加载并执行

webpackPrefeatch 预获取
webpackPrefeatch 和 webpackPrelaod 不太一样, webpackPrefeatch 会在浏览器空闲的时候进行下载
src/index.jsconst button = document.createElement('button');
button.innerText = '加载bar';
button.addEventListener('click',() => {
import(
/* webpackChunkName: 'bar' */
/* webpackPrefetch: true */
"./bar"
).then(({sum: sum }) => {
console.log('webpackPrefetch: ',sum(1,2));
});
})
document.body.appendChild(button);执行打包命令
yarn build可以看到以下文件,我们刚刚引入的 bar.js 在打包后的加上了前缀
打开我们的项目 可以看到 bar 文件已经被预先加载了
我们点击 加载 bar 按钮,可以看到以下 这次加载的 bar 文件 在 size 一栏 显示 (prefeatch cache)
这就是 webpack 中的 预加载和预获取,两个比较简单的东西
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议,转载请注明出处。