VUE去中心化的路由实现

  • 2019 年 12 月 19 日
  • 笔记

在做VUE时,很多时候把路由写在同一个路由文件里,这样在项目越来越大时,该文件需要多次修改,这样很不方便。 现在需要把各个路由分配至各个模块中,然后进行汇总 1.编写各个模块的路由

 export default [          {          path: '/sys/auth/menu',          component: resolve => require(['./sys_menu.vue'], resolve),          meta: {title: '菜单管理'}      },      {          path: '/sys/auth/resource',          component: resolve => require(['./sys_auth_resource.vue'], resolve),          meta: {title: '资源管理'}      },      {          path: '/sys/auth/role',          component: resolve => require(['./sys_auth_role.vue'], resolve),          meta: {title: '角色管理'}      },    ]

2.遍历各个路由,汇总路由

 import Vue from 'vue';  import Router from 'vue-router';    Vue.use(Router);  let routers = []  const routerContext = require.context('./views', true, /router.js/)  routerContext.keys().forEach(route => {      // 如果是根目录的 index.js、 不做任何处理      if (route.startsWith('./index')) {          return      }      const routerModule = routerContext(route)      // 兼容 import export 和 require module.export 两种规范 Es modules commonjs      routers = [...routers, ...(routerModule.default || routerModule)]  })  export default new Router({      routes: [          {              path: '/',              redirect: '/dashboard'          },          {              path: '/',              component: resolve => require(['./components/common/Home.vue'], resolve),              meta: {title: '主页'},              children: routers          },          {              path: '/login',              component: resolve => require(['./views/Login.vue'], resolve)          },          {              path: '/oauth/:source',              component: resolve => require(['./views/oauth/oauth.vue'], resolve)          },          {              path: '*',              redirect: '/404'          },        ]  })

至此,VUE去中心化路由功能已完成!