Vue 在第一次请求时加载所有块
Vue loading all the chunks on the first request
我正在学习 Vue,刚读到路由章节。我能够使用 vue/cli 和初始路由器配置创建模板项目。这是路由器代码:
export default new Router({
mode: 'history',
base: process.env.BASE_URL,
routes: [
{
path: '/',
name: 'home',
component: Home,
},
{
path: '/about',
name: 'about',
// route level code-splitting
// this generates a separate chunk (about.[hash].js) for this route
// which is lazy-loaded when the route is visited.
component: () => import(/* webpackChunkName: "about" */ './views/About.vue'),
},
],
});
根据对代码的评论和 docs 这应该足以延迟加载 About 组件。
当我尝试加载应用程序页面时,获取了 "about.js" 脚本:
如果我导航至“关于浏览器”,则会从磁盘缓存中获取脚本:
我很困惑。我原以为只有在导航到“关于”页面后才能看到脚本 about.js 加载。我错过了什么吗?
@TJWeems 指出的 discussion 非常清楚。
使用 webpack-chain 禁用预取插件后,我获得了预期的行为。我刚刚在我的根目录(与 package.json 相同)上创建了一个 vue.config.js,内容如下:
module.exports = {
chainWebpack: (config) => {
config.plugins.delete('prefetch');
}
};
请记住,我这样做是出于好奇。我可能会在未来的项目中启用预取插件,只考虑在特定情况下禁用它。
我正在学习 Vue,刚读到路由章节。我能够使用 vue/cli 和初始路由器配置创建模板项目。这是路由器代码:
export default new Router({
mode: 'history',
base: process.env.BASE_URL,
routes: [
{
path: '/',
name: 'home',
component: Home,
},
{
path: '/about',
name: 'about',
// route level code-splitting
// this generates a separate chunk (about.[hash].js) for this route
// which is lazy-loaded when the route is visited.
component: () => import(/* webpackChunkName: "about" */ './views/About.vue'),
},
],
});
根据对代码的评论和 docs 这应该足以延迟加载 About 组件。
当我尝试加载应用程序页面时,获取了 "about.js" 脚本:
如果我导航至“关于浏览器”,则会从磁盘缓存中获取脚本:
我很困惑。我原以为只有在导航到“关于”页面后才能看到脚本 about.js 加载。我错过了什么吗?
@TJWeems 指出的 discussion 非常清楚。
使用 webpack-chain 禁用预取插件后,我获得了预期的行为。我刚刚在我的根目录(与 package.json 相同)上创建了一个 vue.config.js,内容如下:
module.exports = {
chainWebpack: (config) => {
config.plugins.delete('prefetch');
}
};
请记住,我这样做是出于好奇。我可能会在未来的项目中启用预取插件,只考虑在特定情况下禁用它。