@jmodule/client
Version:
JModule运行时
156 lines (155 loc) • 5.01 kB
TypeScript
import { ModuleHook } from './hook';
import { JModule } from './module';
import { Resource } from './resource';
export declare class JModuleManager extends ModuleHook {
private static resourceCache;
private static jmoduleCache;
private static resourceUrlAndModuleKeyMap;
private static fileMapCache;
private static fileListCache;
private static moduleExportsCache;
private static moduleExports;
static nextJModuleId: number;
static defaultJModule?: typeof JModule;
static createDocument(options: {
sourceUrl: string;
currentUrl: string;
}): Document;
/**
* 读取全局初始化配置
*
* @return {Object|undefined}
*/
static getInitialConfig(): any;
/**
* @ignore
*/
static setFileMapCache(key: string, val: [string, string]): [string, string];
/**
* @ignore
*/
static appendFileList(url: string): void;
/**
* @ignore
*/
static findResolvedUrlByUrl(urlWithPublicPath: string): string[] | [string, string | undefined];
/**
* 根据资源地址查找对应的 resourceUrl
*
* @param {String} url
* @returns {String|undefined}
*/
static getResourceUrlByUrl(url: string | undefined | null): string | undefined;
/**
* 读取/设置 url 与 Resource 之间的关系
* @param {String} url
* @param {Resource|null} resource
* @returns {Resource|undefined}
*/
static resource(url: string, resource?: Resource | null): Resource | undefined;
/**
* 读取/设置 moduleKey 与 Module 之间的关系
* @param {String} moduleKey
* @param {JModule|null} instance
* @returns {JModule|undefined}
*/
static jmodule(moduleKey: string, instance?: JModule | null): JModule | undefined;
/**
* 获取已注册的应用列表
* @readOnly
*/
static get registeredModules(): JModule[];
/**
* 记录 resourceUrl 与 moduleKey 之间的映射关系
* @ignore
* @param {String} resourceUrl
* @param {String} moduleKey
*/
static mapResourceUrlAndModuleKey(resourceUrl: string, moduleKey: string): void;
/**
* 基于 resourceUrl 查找关联的 Modules
* @param resourceUrl
* @returns { Array<JModule> }
*/
static getModulesByResourceUrl(resourceUrl: string): JModule[];
/**
* 读取 moduleKey 对应的 JModule 构造函数
* @param moduleKey
* @returns { typeof JModule }
*/
static getJModuleConstructor(moduleKey: string): Function;
static registerJModule(JModuleConstructor: typeof JModule): number;
/**
* 存储模块暴露的组件
*
* @ignore
* @param {String} moduleKey
* @param {any} data
*/
static cacheModuleExport(moduleKey: string, data: any): void;
/**
* 等待模块加载完成
*
* @param {String} moduleKey
* @example
* await JModuleManager.waitModuleComplete(moduleKey);
* @return {Promise<Module>}
*/
static waitModuleComplete(moduleKey: string): Promise<JModule>;
/**
* 引用其它模块暴露的功能
*
* @param {String} namespace
* @example
* JModule.require('pipeline.models.PipelineApp')
* .then((PipelineApp) => {
* // do something
* });
* @return {Promise<var>}
*/
static require(namespace: string): Promise<any>;
/**
* 定义模块
* @param {String} moduleKey 定义模块唯一标识
* @param {Object} metadata 定义模块
* @param {Function} [metadata.init<jModuleInstance>] 初始化函数,自动调用
* @param {Array<moduleKey>} [metadata.imports] 依赖的模块
* @param {Object} [metadata.exports] 对外暴露的功能
* @example
* JModule.define('pipeline', {
* init(module) {},
* routes,
* imports: [],
* exports: {},
* });
*/
static define: {
(moduleKey: string, metadata: import("./config").ModuleMetadata & Record<string, any>): Promise<JModule>;
(metadata: import("./config").ModuleMetadata & Record<string, any>): Promise<JModule>;
};
/**
* 暴露平台功能给模块使用
* 与 JModuleManager.defaultJModule 数据一致
* @param {object} obj 需要暴露的对象
* @example
* JModuleManager.export({
* $platform: {
* utils, event, router,
* },
* $node_modules: {
* vue: Vue,
* },
* }, { scope: 'default' });
*/
static export(obj?: {}, matcher?: Record<string, string | number>): void;
/**
* 引用平台暴露的对象
*
* @param {String} namespace
* @param {Object} config 通过编译工具注入的相关环境参数
* @return {var}
*/
static import<T>(namespace?: string, config?: Record<string, string | number>): T;
}
declare const _default: typeof JModuleManager;
export default _default;