router.ts 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. /*
  2. * 路由实例存储文件,请勿轻易添加其他代码,防止出现 HMR 或其他问题
  3. */
  4. import type {Router, RouterHistory} from 'vue-router';
  5. import {createRouter as createVueRouter, createWebHistory, createWebHashHistory, RouterOptions} from 'vue-router';
  6. export let router: Router = null as unknown as Router;
  7. export function setRouter(r: Router) {
  8. router = r
  9. }
  10. let webHistory: Nullable<RouterHistory> = null;
  11. /**
  12. * 创建路由
  13. * @param options 参数
  14. * @param useHashHistory 是否使用 hash 路由,true使用,false不使用hash路由
  15. */
  16. export function createRouter(options: Partial<RouterOptions>, useHashHistory = false) {
  17. const createFn = useHashHistory ? createWebHashHistory : createWebHistory;
  18. webHistory = createFn(import.meta.env.VITE_PUBLIC_PATH);
  19. // app router
  20. const router = createVueRouter({
  21. history: webHistory,
  22. routes: [],
  23. ...options,
  24. });
  25. setRouter(router)
  26. return router
  27. }
  28. // 销毁路由
  29. export function destroyRouter() {
  30. setRouter(null as unknown as Router);
  31. if (webHistory) {
  32. webHistory.destroy();
  33. }
  34. webHistory = null
  35. }