JModule 实例

Hierarchy (view full)

Constructors

Properties

activate?: ActivateHandler

约定的模块激活函数, 通常由 JModule.defineType 进行实现

autoBootstrap?: boolean

模块加载后自动执行 bootstrap 函数, 默认为: true

bootstrap?: (() => Promise<JModule>)

[不可配置] JModule.define 执行时自动生成的模块启动函数 全局仅执行一次, 内部依次处理: 执行init函数、加载 imports 声明的依赖模块、记录 exports 信息

Type declaration

    • (): Promise<JModule>
    • [不可配置] JModule.define 执行时自动生成的模块启动函数 全局仅执行一次, 内部依次处理: 执行init函数、加载 imports 声明的依赖模块、记录 exports 信息

      Returns Promise<JModule>

deactivate?: DeactivateHandler

约定的模块卸载函数, 通常由 JModule.defineType 进行实现

hooks: {
    complete: undefined | Promise<JModule>;
}

模块内置的 hooks 信息, 仅支持 hooks.complete

Type declaration

  • complete: undefined | Promise<JModule>

Example

await module.hooks.complete
key: string

模块的key, 全局唯一

metadata: {
    [key: string]: any;
}

模块扩展信息

Type declaration

  • [key: string]: any
name?: string

模块别名

resource: Resource

模块对应的资源实例

type?: string

模块类型

url: string

模块资源地址

_debug?: boolean
define: {
    (moduleKey, metadata): Promise<JModule>;
    (metadata): Promise<JModule>;
} = manager.define

定义模块

Type declaration

    • (moduleKey, metadata): Promise<JModule>
    • 定义模块

      Parameters

      • moduleKey: string

        定义模块唯一标识

      • metadata: ModuleMetadata & Record<string, any>

        定义模块

      Returns Promise<JModule>

      Example

      JModule.define('pipeline', {
      init(module) {
      console.log(module);
      },
      imports: [],
      exports: {},
      });
    • (metadata): Promise<JModule>
    • 定义模块

      Parameters

      Returns Promise<JModule>

      Example

      JModule.define('pipeline', {
      init(module) {
      console.log(module);
      },
      imports: [],
      exports: {},
      });

Param: moduleKey

定义模块唯一标识

Param: metadata

定义模块

Param: metadata.init<jModuleInstance>

初始化函数,自动调用

Param: metadata.imports

依赖的模块

Param: metadata.exports

对外暴露的功能

Example

JModule.define('pipeline', {
init(module) {
console.log(module);
},
imports: [],
exports: {},
});
id: number

Accessors

  • get status(): ModuleStatus
  • 获取模块状态

    Returns ModuleStatus

  • set status(status): void
  • 设置模块状态, 更新后会自动触发 module.${this.key}.statusChange事件

    Parameters

    Returns void

    Fires

    window#module.[moduleKey].statusChange

    Fires

    window#module.[moduleKey].[status]

  • get debug(): boolean
  • Returns boolean

  • set debug(status): void
  • 设置debug模式,开启后将打印模块注册、加载、解析的全过程信息

    Parameters

    • status: boolean

    Returns void

    Example

    JModule.debug = true;
    

Methods

  • 加载模块

    Parameters

    • Optional targetStatus: "init" | "preload" | "load" = 'load'

      期望达到的目标状态,默认为 'load',向下兼容。

    • Optional options: LoadOptions<HTMLScriptElement | HTMLLinkElement> = ...

      选项参数。

    Returns Promise<void | Resource>

    • 返回一个承诺,该承诺在模块加载完成时解决。

    Async

    Method

  • 根据 resourceLoaderUrl 设置资源 当 resourceLoaderUrl 为空时, 该函数只能在 resource.url 文件对应的脚本中执行

    Parameters

    • resourceMetadata: ResourceMetadata

      资源元数据

    • Optional resourceLoaderUrl: string

      加载资源的初始脚本地址, 默认为执行当前函数的脚本文件

    Returns Resource

  • 定义子应用类型的处理逻辑

    Parameters

    • type: string

      子应用类型

    • typeHandler: TypeHandler

      类型处理函数

    Returns void

  • 暴露平台功能给模块使用

    Parameters

    • obj: {} = {}

      需要暴露的对象

      • matcher: {} = {}

        Returns typeof JModule

        Example

        JModule.export({
        $platform: {
        utils, event, router,
        },
        $node_modules: {
        vue: Vue,
        },
        });
        import Vue from '$node_modules.vue';
      • 根据 moduleKey 获取模块实例

        Parameters

        • key: string

          moduleKey

        Returns undefined | JModule

        Static

      • 根据 moduleKey 异步获取模块实例

        Parameters

        • key: string

          moduleKey

        • Optional timeout: number

        Returns Promise<JModule>

        Static

      • 注册模块

        Parameters

        Returns Promise<JModule[]>

        Fires

        window#module.afterRegister

        Example

        JModule.registerModules([{
        type: 'page',
        key: 'pipeline',
        name: 'pipeline',
        url: 'http://localhost:8080/modules/pipeline/index.json',
        }]);
        window.addEventListener('module.afterRegister', ({ detail:modules }) => {
        // do sth;
        })
      • 引用其它模块暴露的功能

        Parameters

        • namespace: string

        Returns Promise<any>

        Example

        JModule.require('pipeline.models.PipelineApp')
        .then((PipelineApp) => {
        // do something
        });
      • 异步执行指定 hook

        Parameters

        • hookName: string
        • Rest ...inputArgs: any[]

        Returns Promise<any[]>

      • 同步执行指定 hook

        Parameters

        • hookName: string
        • Rest ...inputArgs: any[]

        Returns any[]

      Generated using TypeDoc