index.js 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. import Vue from 'vue';
  2. import VueRouter from 'vue-router';
  3. import Layout from '@/layouts';
  4. import Login from '@/views/login';
  5. import NProgress from 'nprogress'; // progress bar
  6. import 'nprogress/nprogress.css';
  7. NProgress.configure({ showSpinner: false });
  8. Vue.use(VueRouter);
  9. const routes = [
  10. {
  11. path: '/login',
  12. component: Login
  13. },
  14. {
  15. path: '/404',
  16. component: () => import('@/views/404')
  17. },
  18. {
  19. path: '/',
  20. component: Layout,
  21. redirect: '/taskkanban',
  22. children: [
  23. {
  24. path: '/taskkanban',
  25. name: 'TaskKanban',
  26. component: () => import('@/views/teacher/TaskKanban')
  27. }
  28. ]
  29. },
  30. {
  31. path: '*',
  32. redirect: '/404',
  33. component: () => import('@/views/404')
  34. }
  35. ];
  36. const createRouter = () =>
  37. new VueRouter({
  38. // mode: 'history',
  39. scrollBehavior: () => ({ y: 0 }),
  40. routes
  41. });
  42. const router = createRouter();
  43. // 全局前置守卫
  44. router.beforeEach(async (to, from, next) => {
  45. NProgress.start();
  46. next();
  47. });
  48. // 全局后置钩子
  49. router.afterEach(() => {
  50. NProgress.done();
  51. });
  52. // 重置路由
  53. export function resetRouter() {
  54. const newRouter = createRouter();
  55. router.matcher = newRouter.matcher; // reset router
  56. }
  57. export default router;