/** * 全站路由配置 * * meta参数说明 * keepAlive是否缓冲页面 * isTab是否加入到tag导航 * isAuth是否需要授权 */ import Vue from "vue"; import VueRouter from "vue-router"; import PageRouter from "./page/"; // 页面路由 import ViewsRouter from "./views/"; // 页面路由 import AvueRouter from "./avue-router"; //封装的路由控制方法 import i18n from "@/lang"; // Internationalization 国际化 多语言 import Store from "../store/"; // vuex Vue.use(VueRouter); //创建路由 export const createRouter = () => new VueRouter({ routes: [...PageRouter, ...ViewsRouter], }); const Router = createRouter(); // 获得 route 实例 // 初始化和注册 AvueRouter AvueRouter.install(Vue, { router: Router, store: Store, i18n: i18n, keepAlive: false, }); Router.$avueRouter.formatRoutes(Store.state.user.menuAll, true); // 动态路由核心方法 Router.addRoutes([...PageRouter, ...ViewsRouter]); export function resetRouter() { // 重置路由 比如用于身份验证失败,需要重新登录时 先清空当前的路有权限 const newRouter = createRouter(); Router.matcher = newRouter.matcher; // reset router AvueRouter.install(Vue, { router: Router, store: Store, i18n: i18n, keepAlive: false, }); } export default Router;