vue-router.ts 3.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. /**
  2. * shims/vue-router.ts —— 'vue-router' 模块名 → UMD 全局 VueRouter 的唯一胶水层(README §3.3-1)。
  3. *
  4. * 存在理由:SFC 模板编译器(@vitejs/plugin-vue)产物内部会生成
  5. * 'import { X } from "vue-router"' 这类模块名 import,vite define 无法改写模块名(只处理裸标识符),
  6. * 故 vite.config 的 alias 将 'vue-router' 重定向到本文件。
  7. *
  8. * 关键实现(保证 dist 不含框架运行时):
  9. * - import type 仅取 ESM 命名空间类型(编译期擦除,不进产物);
  10. * - 运行时值全部取自 globalThis.VueRouter(index.html 引入的 UMD 全局);
  11. * - 编译后只剩"取全局 + 转发"代码,框架本体不进 dist。
  12. *
  13. * 本文件由 scripts/gen-shims.cjs 生成(导出清单来自当前安装版本,跳过 ESM 类型未声明的 SSR/compat 边缘键);
  14. * 框架升级(README §1.5 五步流程)时须重新生成并按 typecheck 报错维护排除清单。
  15. * 纪律:shims/ 是全项目唯一允许出现框架模块名的目录。
  16. */
  17. import type * as VUEROUTER_NS from 'vue-router';
  18. /** 运行时框架全局(index.html 按序注入;经 unknown 收窄为 ESM 命名空间类型) */
  19. const V: typeof VUEROUTER_NS = (globalThis as unknown as { VueRouter: typeof VUEROUTER_NS }).VueRouter;
  20. // eslint-disable-next-line import/no-mutable-exports
  21. export const NavigationFailureType = V.NavigationFailureType;
  22. // eslint-disable-next-line import/no-mutable-exports
  23. export const RouterLink = V.RouterLink;
  24. // eslint-disable-next-line import/no-mutable-exports
  25. export const RouterView = V.RouterView;
  26. // eslint-disable-next-line import/no-mutable-exports
  27. export const START_LOCATION = V.START_LOCATION;
  28. // eslint-disable-next-line import/no-mutable-exports
  29. export const createMemoryHistory = V.createMemoryHistory;
  30. // eslint-disable-next-line import/no-mutable-exports
  31. export const createRouter = V.createRouter;
  32. // eslint-disable-next-line import/no-mutable-exports
  33. export const createRouterMatcher = V.createRouterMatcher;
  34. // eslint-disable-next-line import/no-mutable-exports
  35. export const createWebHashHistory = V.createWebHashHistory;
  36. // eslint-disable-next-line import/no-mutable-exports
  37. export const createWebHistory = V.createWebHistory;
  38. // eslint-disable-next-line import/no-mutable-exports
  39. export const isNavigationFailure = V.isNavigationFailure;
  40. // eslint-disable-next-line import/no-mutable-exports
  41. export const loadRouteLocation = V.loadRouteLocation;
  42. // eslint-disable-next-line import/no-mutable-exports
  43. export const matchedRouteKey = V.matchedRouteKey;
  44. // eslint-disable-next-line import/no-mutable-exports
  45. export const onBeforeRouteLeave = V.onBeforeRouteLeave;
  46. // eslint-disable-next-line import/no-mutable-exports
  47. export const onBeforeRouteUpdate = V.onBeforeRouteUpdate;
  48. // eslint-disable-next-line import/no-mutable-exports
  49. export const parseQuery = V.parseQuery;
  50. // eslint-disable-next-line import/no-mutable-exports
  51. export const routeLocationKey = V.routeLocationKey;
  52. // eslint-disable-next-line import/no-mutable-exports
  53. export const routerKey = V.routerKey;
  54. // eslint-disable-next-line import/no-mutable-exports
  55. export const routerViewLocationKey = V.routerViewLocationKey;
  56. // eslint-disable-next-line import/no-mutable-exports
  57. export const stringifyQuery = V.stringifyQuery;
  58. // eslint-disable-next-line import/no-mutable-exports
  59. export const useLink = V.useLink;
  60. // eslint-disable-next-line import/no-mutable-exports
  61. export const useRoute = V.useRoute;
  62. // eslint-disable-next-line import/no-mutable-exports
  63. export const useRouter = V.useRouter;
  64. // eslint-disable-next-line import/no-mutable-exports
  65. export const viewDepthKey = V.viewDepthKey;