index.ts 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. import { aboutIcon, homeIcon, friendIcon, archiveIcon } from '@/assets/icons';
  2. import { createRouter, createWebHistory, type RouteRecordRaw } from 'vue-router'
  3. import type { RouteComponent } from 'vue-router';
  4. interface BlogModule {
  5. routeName: string;
  6. routeUrl: string;
  7. title: string;
  8. iconTemplate?: string;
  9. description?: string;
  10. component: RouteComponent;
  11. showInMenu: boolean;
  12. }
  13. export const modules: BlogModule[] = [
  14. {
  15. routeName: "home",
  16. title: "主页",
  17. routeUrl: "/",
  18. iconTemplate: homeIcon.template,
  19. component: () => import("../views/PostView.vue"),
  20. showInMenu: true
  21. },
  22. {
  23. routeName: "archives",
  24. title: "归档",
  25. routeUrl: "/archives",
  26. iconTemplate: archiveIcon.template,
  27. component: () => import('../views/ArchivesView.vue'),
  28. showInMenu: true
  29. },
  30. {
  31. routeName: "about",
  32. title: "关于",
  33. routeUrl: "/about",
  34. iconTemplate: aboutIcon.template,
  35. component: () => import('../views/AboutView.vue'),
  36. showInMenu: true
  37. },
  38. {
  39. routeName: "friend",
  40. title: "友链",
  41. routeUrl: "/friend",
  42. iconTemplate: friendIcon.template,
  43. component: () => import('../views/FriendLinkView.vue'),
  44. showInMenu: true
  45. },
  46. {
  47. routeName: "detail",
  48. title: "博文详情",
  49. routeUrl: "/detail",
  50. component: () => import('../views/PostDetailView.vue'),
  51. showInMenu: false
  52. },
  53. {
  54. routeName: "editor",
  55. title: "编辑博文",
  56. routeUrl: "/editor",
  57. component: () => import('../views/PostEditView.vue'),
  58. showInMenu: false
  59. }
  60. ];
  61. function toRouteRecordRaw(target: BlogModule): RouteRecordRaw {
  62. return {
  63. path: target.routeUrl,
  64. name: target.routeName,
  65. component: target.component
  66. }
  67. }
  68. export const router = createRouter({
  69. history: createWebHistory(import.meta.env.BASE_URL),
  70. routes: modules.map(toRouteRecordRaw)
  71. });