Lazy Route 被预取,忽略 webpack 魔术注释(Vue)
Lazy Route gets prefetched, ignoring webpack magic comments (Vue)
我需要开发一个带有登录视图的服务器端身份验证应用程序。如果我想使用 Vue Router 在登录和索引(受保护的视图)之间动态切换,我需要避免在成功验证之前登录视图下载(预取)索引,因为如果没有,服务器将使用登录页面响应索引预取请求。
我试图在具有两条路由的原始 Vue 路由器示例中实现这一点。家和关于。包含第一个,第二个是延迟加载(但预取),这将是实际应用程序中的受保护页面。
为了避免预取我已经尝试了所有我找到的webpack魔法评论,但是预取仍然是hapenning
代码如下:
import Vue from "vue"
import VueRouter from "vue-router"
import Home from "../views/Home.vue"
Vue.use(VueRouter);
const 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"*/ /* webpackMode: "lazy" */ /* webpackPrefetch: false */ /* webpackPreload: false */ "../views/About.vue")
}
];
const router = new VueRouter({
routes
});
export default router;
这里是结果:
我不想从一般的 webpack 配置中禁用该功能,因为我希望它用于应用程序的其余部分 links。我只想为此 link.
禁用它
我应该如何配置路由器来实现呢?
感谢您的宝贵时间,
H25E
有一个 discussion on Github 提供了一些与您的情况相关的提示。
// vue.config.js
module.exports = {
chainWebpack: config => {
config.plugin('prefetch').tap(options => {
options.fileBlackList.push([/MyChunkName(.*)\.js$/]);
return options;
});
}
};
默认情况下,Vue-CLI 会自动预取所有动态导入 - 因此您必须添加黑名单。
Webpack 的神奇注释(webpackPrefetch
也可能 webpackPreload
)接受 true
或数字(索引)——但不接受 false
参数。
我需要开发一个带有登录视图的服务器端身份验证应用程序。如果我想使用 Vue Router 在登录和索引(受保护的视图)之间动态切换,我需要避免在成功验证之前登录视图下载(预取)索引,因为如果没有,服务器将使用登录页面响应索引预取请求。
我试图在具有两条路由的原始 Vue 路由器示例中实现这一点。家和关于。包含第一个,第二个是延迟加载(但预取),这将是实际应用程序中的受保护页面。
为了避免预取我已经尝试了所有我找到的webpack魔法评论,但是预取仍然是hapenning
代码如下:
import Vue from "vue"
import VueRouter from "vue-router"
import Home from "../views/Home.vue"
Vue.use(VueRouter);
const 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"*/ /* webpackMode: "lazy" */ /* webpackPrefetch: false */ /* webpackPreload: false */ "../views/About.vue")
}
];
const router = new VueRouter({
routes
});
export default router;
这里是结果:
我不想从一般的 webpack 配置中禁用该功能,因为我希望它用于应用程序的其余部分 links。我只想为此 link.
禁用它我应该如何配置路由器来实现呢?
感谢您的宝贵时间,
H25E
有一个 discussion on Github 提供了一些与您的情况相关的提示。
// vue.config.js
module.exports = {
chainWebpack: config => {
config.plugin('prefetch').tap(options => {
options.fileBlackList.push([/MyChunkName(.*)\.js$/]);
return options;
});
}
};
默认情况下,Vue-CLI 会自动预取所有动态导入 - 因此您必须添加黑名单。
Webpack 的神奇注释(webpackPrefetch
也可能 webpackPreload
)接受 true
或数字(索引)——但不接受 false
参数。