/* * 路由实例存储文件,请勿轻易添加其他代码,防止出现 HMR 或其他问题 */ import type {Router, RouterHistory} from 'vue-router'; import {createRouter as createVueRouter, createWebHistory, createWebHashHistory, RouterOptions} from 'vue-router'; export let router: Router = null as unknown as Router; export function setRouter(r: Router) { router = r } let webHistory: Nullable = null; /** * 创建路由 * @param options 参数 * @param useHashHistory 是否使用 hash 路由,true使用,false不使用hash路由 */ export function createRouter(options: Partial, useHashHistory = false) { const createFn = useHashHistory ? createWebHashHistory : createWebHistory; webHistory = createFn(import.meta.env.VITE_PUBLIC_PATH); // app router let router = createVueRouter({ history: webHistory, routes: [], ...options, }); setRouter(router) return router } // 销毁路由 export function destroyRouter() { setRouter(null as unknown as Router); if (webHistory) { webHistory.destroy(); } webHistory = null }