代码之家  ›  专栏  ›  技术社区  ›  marcellorvalle

Vue在第一次请求时加载所有块

  •  1
  • marcellorvalle  · 技术社区  · 6 年前

    我正在学习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页面之后才会加载about.js脚本。我错过什么了吗?

    1 回复  |  直到 6 年前
        1
  •  0
  •   marcellorvalle    6 年前

    这个 discussion 由@tjeems指出的非常清楚。

    我在用Webpack链禁用预取插件后获得了预期的行为。我刚创造了一个 VU.CONT.JS 在我的根目录上(与package.json相同),包含以下内容:

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

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