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