index.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. // //创建一个路由器
  2. import { createRouter, createWebHashHistory} from "vue-router";
  3. import { getToken2} from "../utils/token";
  4. const router = createRouter({
  5. history: createWebHashHistory(),
  6. routes: [
  7. {
  8. path: '/',
  9. name:'启动页',
  10. component: () => import('@/views/openpage.vue'),
  11. meta:{
  12. keepAlive:false, // 需要缓存
  13. title: '启动页'
  14. },
  15. children:[
  16. {
  17. path: '/home/newfile',
  18. name: '首页',
  19. component: () => import('@/views/home/newfile.vue'),
  20. },
  21. {
  22. path: '/home/querylist',
  23. name: '打开',
  24. component: () => import('@/views/home/querylist.vue'),
  25. },
  26. {
  27. path: '/home/savefile',
  28. name: 'savefile',
  29. component: () => import('@/views/home/savefile.vue'),
  30. }
  31. ]
  32. },
  33. {
  34. path: '/index',
  35. name:'主页1',
  36. component: () => import('@/views/index.vue'),
  37. meta:{
  38. keepAlive:false, // 需要缓存
  39. title: '主页1'
  40. },
  41. },
  42. {
  43. path: '/home',
  44. name:'主页',
  45. component: () => import('@/views/home.vue'),
  46. meta:{
  47. keepAlive:false, // 需要缓存
  48. title: '主页'
  49. },
  50. },
  51. {
  52. path: '/login',
  53. name: 'login',
  54. component: () => import('@/views/login/index.vue'),
  55. meta: {
  56. keepAlive: false,
  57. title: '登录'
  58. }
  59. },
  60. {
  61. path: '/register',
  62. name: 'register',
  63. component: () => import('@/views/login/register.vue'),
  64. meta: {
  65. keepAlive: false,
  66. title: '注册'
  67. }
  68. },
  69. {
  70. path: '/vueflow',
  71. name:'vueflow',
  72. component: () => import('@/views/vueflow/index.vue'),
  73. meta:{
  74. keepAlive:false, // 需要缓存
  75. title: 'vueflow'
  76. },
  77. },
  78. {
  79. path: '/demo',
  80. name:'demo',
  81. component: () => import('@/views/vueflow/demo.vue'),
  82. meta:{
  83. keepAlive:false, // 需要缓存
  84. title: 'vueflow'
  85. },
  86. },
  87. ]
  88. })
  89. //修改动态网页标题 beforeEach 导航钩子,路由改变前触发
  90. router.beforeEach((to, from, next) => {
  91. const token = getToken2(); // 获取 token
  92. // 定义不需要登录的白名单路由
  93. const whiteList = ['login', 'register'];
  94. // 如果用户有 token,直接放行
  95. if (token) {
  96. document.title = to.name || '默认标题'; // 设置页面标题
  97. next();
  98. }
  99. // 如果没有 token,并且目标页面不在白名单里,跳转到登录页
  100. else if (!whiteList.includes(to.name)) {
  101. next({ name: 'login' });
  102. }
  103. else {
  104. document.title = to.name || '默认标题';
  105. next();
  106. }
  107. });
  108. // afterEach 不需要 next 参数
  109. router.afterEach(() => {
  110. window.scrollTo(0, 0); // 页面滚动到顶部
  111. });
  112. export default router;