全局路由守卫和路由

逃离我推掉我的手 2022-12-09 11:52 379阅读 0赞
  1. import {
  2. createRouter,
  3. createWebHistory,
  4. RouteRecordRaw,
  5. createWebHashHistory,
  6. RouteLocationNormalized,
  7. NavigationGuardNext,
  8. } from "vue-router";
  9. import layout from "../views/layout.vue";
  10. import strategy111 from "../views/strategy111.vue";
  11. import ticket111 from "../views/ticket111.vue";
  12. const routes: Array<RouteRecordRaw> = [
  13. {
  14. path: "",
  15. redirect: "/home",
  16. component: layout,
  17. children: [
  18. {
  19. path: "/home",
  20. name: "Home",
  21. component: () => import("../views/Home.vue"),
  22. meta: {
  23. title: "首页",
  24. parentpath: "/home",
  25. },
  26. },
  27. {
  28. path: "/strategy111",
  29. name: "strategy111",
  30. redirect: "/strategy",
  31. component: strategy111,
  32. meta: {
  33. title: "旅游攻略",
  34. parentpath: "/strategy",
  35. },
  36. children: [
  37. {
  38. path: "/strategy",
  39. name: "strategy",
  40. component: () => import("../views/strategy.vue"),
  41. meta: {
  42. title: "旅游攻略",
  43. parentpath: "/strategy",
  44. },
  45. },
  46. {
  47. path: "/strategy/create",
  48. name: "strategycreate",
  49. component: () => import("../views/strategy/strategycreate.vue"),
  50. meta: {
  51. title: "游记",
  52. parentpath: "/strategy",
  53. },
  54. },
  55. {
  56. path: "/strategy/deteil",
  57. name: "strategydeteil",
  58. component: () => import("../views/strategy/strategydeteil.vue"),
  59. meta: {
  60. title: "旅游攻略详情",
  61. parentpath: "/strategy",
  62. },
  63. },
  64. ],
  65. },
  66. {
  67. path: "/hotel",
  68. name: "hotel",
  69. component: () => import("../views/hotel.vue"),
  70. meta: {
  71. title: "酒店",
  72. parentpath: "/hotel",
  73. },
  74. },
  75. {
  76. path: "/ticket111",
  77. name: "ticket111",
  78. component: ticket111,
  79. meta: {
  80. title: "国内机票",
  81. parentpath: "/ticket",
  82. },
  83. children: [
  84. {
  85. path: "/ticket",
  86. name: "ticket",
  87. component: () => import("../views/ticket.vue"),
  88. meta: {
  89. title: "国内机票",
  90. parentpath: "/ticket",
  91. },
  92. },
  93. {
  94. path: "/ticket/flights",
  95. name: "ticketflights",
  96. component: () => import("../views/air/ticketflights.vue"),
  97. meta: {
  98. title: "机票列表",
  99. parentpath: "/ticket",
  100. },
  101. },
  102. ],
  103. },
  104. {
  105. path: "/login",
  106. name: "login",
  107. component: () => import("../views/login.vue"),
  108. meta: {
  109. title: "登录/注册",
  110. parentpath: "/login",
  111. },
  112. },
  113. ],
  114. },
  115. ];
  116. //决定路由模式
  117. const isPro: boolean = process.env.NODE_ENV === "prodution";
  118. const router = createRouter({
  119. //history是路由模式(线上线下)
  120. history: isPro
  121. ? createWebHashHistory(process.env.BASE_URL)
  122. : createWebHistory(process.env.BASE_URL),
  123. routes,
  124. });
  125. router.beforeEach(
  126. (
  127. to: RouteLocationNormalized,
  128. from: RouteLocationNormalized,
  129. next: NavigationGuardNext
  130. ) => {
  131. document.title = to.meta.title;
  132. console.log(from);
  133. next();
  134. }
  135. );
  136. export default router;

发表评论

表情:
评论列表 (有 0 条评论,379人围观)

还没有评论,来说两句吧...

相关阅读