dynamicRouter.ts 655 B

12345678910111213141516171819
  1. export type DynamicViewsRecord = Record<string, () => Promise<Recordable>>;
  2. /** 已注册模块的动态页面 */
  3. export const packageViews: DynamicViewsRecord = {};
  4. /**
  5. * 注册动态路由页面
  6. * @param getViews 获取该模块下所有页面的方法
  7. */
  8. export function registerDynamicRouter(getViews: () => DynamicViewsRecord) {
  9. if (typeof getViews === 'function') {
  10. const dynamicViews = getViews();
  11. Object.keys(dynamicViews).forEach((key) => {
  12. // 处理动态页面的key,使其可以让路由识别
  13. const newKey = key.replace('./src/views', '../../views');
  14. packageViews[newKey] = dynamicViews[key];
  15. });
  16. }
  17. }