Vue在第一个请求上加载所有块

时间:2018-12-03 17:20:28

标签: vue.js lazy-loading router

我正在学习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 code not lazy loaded

如果我导航至关于浏览器,则从磁盘缓存中获取脚本:

enter image description here

我很困惑。我期望只有在导航到“关于”页面后才能看到脚本about.js加载。我想念什么吗?

1 个答案:

答案 0 :(得分:0)

@TJWeems指出的discussion非常清楚。

在使用webpack-chain禁用预取插件后,我获得了预期的行为。我刚刚在根目录(与package.json相同)上创建了一个 vue.config.js ,其内容如下:

module.exports = {
    chainWebpack: (config) => {
        config.plugins.delete('prefetch');
    }
};

请记住,我是出于好奇而这么做的。我可能会在将来的项目中启用预取插件,而只是考虑在特定情况下将其禁用。