import Vue from 'vue'; import VueRouter from 'vue-router'; import Layout from '@/layouts'; import Login from '@/views/login'; import NProgress from 'nprogress'; // progress bar import 'nprogress/nprogress.css'; NProgress.configure({ showSpinner: false }); Vue.use(VueRouter); const routes = [ { path: '/login', component: Login }, { path: '/404', component: () => import('@/views/404') }, { path: '/', component: Layout, redirect: '/taskkanban', children: [ { path: '/taskkanban', name: 'TaskKanban', component: () => import('@/views/teacher/TaskKanban') } ] }, { path: '*', redirect: '/404', component: () => import('@/views/404') } ]; const createRouter = () => new VueRouter({ // mode: 'history', scrollBehavior: () => ({ y: 0 }), routes }); const router = createRouter(); // 全局前置守卫 router.beforeEach(async (to, from, next) => { NProgress.start(); next(); }); // 全局后置钩子 router.afterEach(() => { NProgress.done(); }); // 重置路由 export function resetRouter() { const newRouter = createRouter(); router.matcher = newRouter.matcher; // reset router } export default router;