dynamicRouter.ts 651 Bytes
export type DynamicViewsRecord = Record<string, () => Promise<Recordable>>;

/** 已注册模块的动态页面 */
export const packageViews: DynamicViewsRecord = {};

/**
 * 注册动态路由页面
 * @param getViews 获取该模块下所有页面的方法
 */
export function registerDynamicRouter(getViews: () => DynamicViewsRecord) {
  if (typeof getViews === 'function') {
    let dynamicViews = getViews();
    Object.keys(dynamicViews).forEach((key) => {
      // 处理动态页面的key,使其可以让路由识别
      let newKey = key.replace('./src/views', '../../views');
      packageViews[newKey] = dynamicViews[key];
    });
  }
}