UNPKG

olympus-r

Version:

一个力求简单易用的前端开发框架 #### 开发语言 TypeScript #### 核心架构 MVC #### 模块间通讯和解耦 采用事件机制,利用一个全局唯一的事件派发器进行模块间通讯,解耦模块间依赖 #### 表现层结构 使用桥接模式拆分接口与实现,达到一套核心驱动多套表现层的目的(目前支持DOM、Egret、PixiJS三种表现层),同时支持表现层的未来可扩展性 #### TypeScript装饰器注入 框架提供TypeScript装饰器注入功能,便捷获取托管对象。例如:

176 lines (175 loc) 5.32 kB
import IDisposable from "../../core/interfaces/IDisposable"; import IOpenClose from "../../core/interfaces/IOpenClose"; import JSFile from '../../core/interfaces/JSFile'; import IHasBridge from "../bridge/IHasBridge"; import RequestData from "../net/RequestData"; import ResponseData from "../net/ResponseData"; import { ICancelable } from '../system/System'; import MediatorStatus from "./MediatorStatus"; /** * @author Raykid * @email initial_r@qq.com * @create date 2018-01-30 * @modify date 2018-01-30 * * 该接口规定了中介者具有的基础功能 */ export default interface IMediatorBasicPart<S = any, OD = any, CD = any> extends IHasBridge<S>, IOpenClose<OD, CD>, IDisposable { /** * 获取中介者状态 * * @type {MediatorStatus} * @memberof IMediatorBasicPart */ readonly status: MediatorStatus; /** * 打开时传递的data * * @type {OD} * @memberof IMediatorBasicPart */ data: OD; /** * 等待获取打开时的参数,可用来等待开启成功的时刻 * * @type {Promise<OD>} * @memberof IMediatorBasicPart */ readonly openData: Promise<OD>; /** * 等待获取关闭时的参数,可用来等待关闭成功的时刻 * * @type {Promise<CD>} * @memberof IMediatorBasicPart */ readonly closeData: Promise<CD>; /** * 开启时是否触发全屏遮罩,防止用户操作,设置操作会影响所有子孙中介者。默认是true * * @type {boolean} * @memberof IMediatorBasicPart */ openMask: boolean; /** * 皮肤 * * @readonly * @type {S} * @memberof IMediatorBasicPart */ skin: S; /** * 原始皮肤 * * @type {S} * @memberof IMediatorBasicPart */ oriSkin: S; /** * 模块初始消息的返回数据 * * @type {ResponseData[]} * @memberof IMediatorBasicPart */ responses: ResponseData[]; /** * 列出中介者所需的资源数组,可重写 * * @returns {string[]} 资源数组,请根据该Mediator所操作的渲染模组的需求给出资源地址或组名 * @memberof IMediatorBasicPart */ listAssets(): string[]; /** * 列出所需CSS资源URL * * @returns {string[]} * @memberof IMediatorBasicPart */ listStyleFiles(): string[]; /** * 列出所需JS资源URL * * @returns {JSFile[]} * @memberof IMediatorBasicPart */ listJsFiles(): JSFile[]; /** * 列出模块初始化请求 * * @returns {RequestData[]} * @memberof IMediatorBasicPart */ listInitRequests(): RequestData[]; /** * 加载从listAssets中获取到的所有资源 * * @param {(err?:Error)=>void} handler 加载完毕后的回调,如果出错则会给出err参数 * @memberof IMediator */ loadAssets(handler: (err?: Error) => void): void; /** * 加载从listStyleFiles中获取到的所有资源 * * @param {(err?:Error)=>void} handler 加载完毕后的回调,如果出错则会给出err参数 * @memberof IMediator */ loadStyleFiles(handler: (err?: Error) => void): void; /** * 加载从listJsFiles中获取到的所有资源 * * @param {(err?:Error)=>void} handler 加载完毕后的回调,如果出错则会给出err参数 * @memberof IMediator */ loadJsFiles(handler: (err?: Error) => void): void; /** * 发送从listInitRequests中获取到的所有资源 * * @param {(err?:Error)=>void} handler 加载完毕后的回调,如果出错则会给出err参数 * @memberof IMediator */ sendInitRequests(handler: (err?: Error) => void): void; /** * 监听事件,从这个方法监听的事件会在中介者销毁时被自动移除监听 * * @param {S} target 事件目标对象 * @param {string} type 事件类型 * @param {Function} handler 事件处理函数 * @param {*} [thisArg] this指向对象 * @memberof IMediator */ mapListener(target: S, type: string, handler: Function, thisArg?: any): void; /** * 注销监听事件 * * @param {S} target 事件目标对象 * @param {string} type 事件类型 * @param {Function} handler 事件处理函数 * @param {*} [thisArg] this指向对象 * @memberof IMediator */ unmapListener(target: S, type: string, handler: Function, thisArg?: any): void; /** * 注销所有注册在当前中介者上的事件监听 * * @memberof IMediator */ unmapAllListeners(): void; /** * 托管ICancelable实例 * * @author Raykid * @date 2019-05-13 * @param {ICancelable} cancelable * @memberof IMediator */ delegateCancelable(cancelable: ICancelable): void; /** * 取消托管ICancelable实例 * * @author Raykid * @date 2019-05-13 * @param {ICancelable} cancelable * @memberof IMediator */ undelegateCancelable(cancelable: ICancelable): void; }