UNPKG

olympus-r

Version:

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

102 lines (101 loc) 3.65 kB
import IMediatorBasicPart from "./IMediatorBasicPart"; import IMediatorBindPart from "./IMediatorBindPart"; import IMediatorTreePart from "./IMediatorTreePart"; import IMediatorModulePart from "./IMediatorModulePart"; import ResponseData from "../net/ResponseData"; /** * @author Raykid * @email initial_r@qq.com * @create date 2017-09-04 * @modify date 2017-09-04 * @export * @interface IMediator * @extends {IMediatorBasicPart<S, OD, CD>} * @extends {IMediatorBindPart<S>} * @extends {IMediatorTreePart} * @extends {IMediatorModulePart<S>} * @template S 皮肤类型 * @template OD 开启参数类型 * @template CD 关闭参数类型 * * 界面中介者接口 */ export default interface IMediator<S = any, OD = any, CD = any> extends IMediatorBasicPart<S, OD, CD>, IMediatorBindPart<S>, IMediatorTreePart, IMediatorModulePart<S> { /** * 当打开时调用 * * @param {OD} [data] 可能的打开参数 * @param {...any[]} args 其他参数 * @returns {*} 若返回对象则使用该对象替换传入的data进行后续开启操作 * @memberof IMediator */ onOpen(data?: OD, ...args: any[]): any; /** * 当关闭时调用 * * @param {CD} [data] 可能的关闭参数 * @param {...any[]} args 其他参数 * @memberof IMediator */ onClose(data?: CD, ...args: any[]): void; /** * 当所需资源加载完毕后调用 * * @param {Error} [err] 加载出错会给出错误对象,没错则不给 * @memberof IMediator */ onLoadAssets(err?: Error): void; /** * 当所需CSS加载完毕后调用 * * @param {Error} [err] 加载出错会给出错误对象,没错则不给 * @memberof IMediator */ onLoadStyleFiles(err?: Error): void; /** * 当所需js加载完毕后调用 * * @param {Error} [err] 加载出错会给出错误对象,没错则不给 * @memberof IMediator */ onLoadJsFiles(err?: Error): void; /** * 当所需资源加载完毕后调用 * * @param {Error} [err] 加载出错会给出错误对象,没错则不给 * @memberof IMediator */ onSendInitRequests(err?: Error): void; /** * 当获取到所有初始化请求返回时调用,可以通过返回一个true来阻止模块的打开 * * @param {ResponseData[]} responses 返回结构数组 * @returns {boolean} 返回true则表示停止模块打开 * @memberof IMediator */ onGetResponses(responses: ResponseData[]): boolean; /** * 其他模块被关闭回到当前模块时调用 * * @param {(IMediator|undefined)} from 从哪个模块回到当前模块 * @param {*} [data] 可能的参数传递 * @memberof IMediator<S, OD, CD> */ onWakeUp(from: IMediator | undefined, data?: any): void; /** * 模块切换到前台时调用(与onWakeUp的区别是open时onActivate会触发,但onWakeUp不会) * * @param {(IMediator|undefined)} from 从哪个模块来到当前模块 * @param {*} [data] 可能的参数传递 * @memberof IMediator<S, OD, CD> */ onActivate(from: IMediator | undefined, data?: OD | any): void; /** * 模块切换到后台时调用(close之后或者其他模块打开时) * * @param {(IMediator|undefined)} to 将要去往哪个模块 * @param {*} [data] 可能的参数传递 * @memberof IMediator<S, OD, CD> */ onDeactivate(to: IMediator | undefined, data?: CD | any): void; }