【发布时间】:2021-03-17 09:49:55
【问题描述】:
我有一个带有延迟加载路由器的 Vue (vue:2.6 & cli-service:4.1) 应用程序,配置如下:
router.ts
const Grid = () => import(/* webpackChunkName: "grid" */ './views/grid/Grid.vue');
const Calendar = () => import(/* webpackChunkName: "calendar" */ './views/calendar/Calendar.vue');
const Tree = () => import(/* webpackChunkName: "tree" */ './views/tree/Tree.vue');
const routes = [
{ path: '/', component: Grid, name: 'grid' },
{ path: '/calendar', component: Calendar, name: 'calendar' },
{ path: '/tree', component: Tree, name: 'tree' },
];
export const router = new VueRouter({ routes });
我正在使用 Babel,所以我将 dynamic import plugin 用作 suggested in the doc
babel.config.js
module.exports = {
presets: [
'@vue/cli-plugin-babel/preset',
],
plugins: [
'@babel/plugin-syntax-dynamic-import',
],
};
在浏览器中使用应用程序,单击路线,我可以看到所需的资产正在加载。
但在第一次加载时,我也看到所有的块都加载了。
似乎不是一些prefetching,因为这些块都是先加载的,并且在加载所有内容时应用程序不可用。
为什么我所有的块都被加载了?我该如何调试?
【问题讨论】:
-
我认为您无需安装任何 Babel 插件即可在 Vue CLI 应用程序中使用动态导入。你可以试试广告删除它吗?
-
还要确保这不是prefetching,您可以构建应用程序并检查
index.html中的prefetch链接 -
实际上,在看到官方文档说它是必需的之前,我没有安装这个动态导入,但它并没有改变任何事情。关于prefecting,你是对的,我看到的都是
prefetch,但我想知道为什么要先下载它们。
标签: javascript vue.js webpack babeljs