vue.js - Vue 路由器延迟加载不起作用或创建单独的 block 文件

我正在尝试在我的路线上实现一些延迟加载但没有成功。这就是我的路由器文件夹中的 index.js 文件的样子

import Vue from "vue";
import VueRouter from "vue-router";
import Home from "../views/Home.vue";
import Login from "../views/Login";
import Register from "../views/Register";
import ResetPw from "../views/ResetPw";
import firebase from "firebase/app";

Vue.use(VueRouter);

const routes = [
    {
        path: "/",
        name: "home",
        component: Home,
        meta: {
            requiresAuth: true
        }
    },
    {
        path: "/login",
        name: "login",
        component: Login,
    },
    {
        path: "/register",
        name: "register",
        component: Register,
    },
    {
        path: "/resetpw",
        name: "resetpw",
        component: ResetPw,
    },
    {
        path: "/member",
        name: "memberlist",
        // component: Memberlist,
        component: () => import('../views/MemberList.vue'),
        meta: {
            requiresAuth: true
        }
    },
    {
        path: "/removed",
        name: "removedlog",
        // component: RemovedLog,
        component: () => import('../views/RemovedLog.vue'),
        meta: {
            requiresAuth: true
        }
    },
    {
        path: "/log",
        name: "pointlog",
        // component: PointLog,
        component: () => import('../views/PointLog.vue'),
        meta: {
            requiresAuth: true
        }
    },
    {
        path: "/:name",
        name: "member",
        // component: Member,
        component: () => import('../views/Member.vue'),
        meta: {
            requiresAuth: true
        }
    },
    {
        path: "/edit/:name",
        name: "edit",
        // component: EditPlayer,
        component: () => import('../views/EditPlayer.vue'),
        meta: {
            requiresAuth: true
        }
    },
    {
        path: "/delete/:name",
        name: "delete",
        // component: DeletePlayer,
        component: () => import('../views/DeletePlayer.vue'),
        meta: {
            requiresAuth: true
        }
    },
    {
        path: "/editremoved/:name",
        name: "editremoved",
        // component: EditRemoved,
        component: () => import('../views/EditRemoved.vue'),
        meta: {
            requiresAuth: true
        }
    }
];

const router = new VueRouter({
    mode: "history",
    base: process.env.BASE_URL,
    routes
});

router.beforeEach((to, from, next) => {
    const requiresAuth = to.matched.some(record => record.meta.requiresAuth);
    const isAuthenticated = firebase.auth().currentUser;
    if (requiresAuth && !isAuthenticated) {
        next("/login");
    } else {
        next();
    }
});

export default router;

我不确定自己做错了什么或遗漏了什么,这就是官方 vue-router 文档所说的实现延迟加载的方式 https://router.vuejs.org/guide/advanced/lazy-loading.html以及有多少教程解释了如何实现延迟加载。

当我进行构建时,它只创建了 1 个 .js 文件,当它应该为每个路由构建一个并使用 firefox 上的网络选项卡时,在路由之间移动时没有新的路由 .js 文件被加载,我只有一个 app.js

最佳答案

可能是您忘记了 webpackChunkName 注释。为此,您需要通过使用特殊注释语法提供 block 名称来使用命名 block 。这是一个例子:

{
   path: '/dashboard',
   name: 'dashboard',
   component: () =>
      import(
         /* webpackChunkName: "Dashboard" */ './components/Dashboard.vue'
      ),
   meta: {
      title: 'Dashboard'
   }
},

https://stackoverflow.com/questions/61086044/

相关文章:

php - 如何使用带有 "grpc_php_plugin"的 PHP 和 Windows 10 的

unity3d - SceneManager LoadScene 在编辑器播放模式下不工作

react-native - 当应用程序在后台运行时使用振动

reactjs - 为什么我在 react-native 中的 svg 没有显示任何阴影?

Angular 8 - POST + 重定向与提交 HTML

完全一样,但不使用 DO

terraform - 如何在 terraform 中指定来自不同项目的 gcs 后端

visual-studio-code - vscode 获取对象属性到建议顶部

ethereum - 我如何使用本地主机来测试 Dai

javascript - 为什么 npm install 没有将包安装到/node_modules

azure - 使用 cloudinit 创建 Terraform azurerm 虚拟机