olympus-r
Version:
一个力求简单易用的前端开发框架 #### 开发语言 TypeScript #### 核心架构 MVC #### 模块间通讯和解耦 采用事件机制,利用一个全局唯一的事件派发器进行模块间通讯,解耦模块间依赖 #### 表现层结构 使用桥接模式拆分接口与实现,达到一套核心驱动多套表现层的目的(目前支持DOM、Egret、PixiJS三种表现层),同时支持表现层的未来可扩展性 #### TypeScript装饰器注入 框架提供TypeScript装饰器注入功能,便捷获取托管对象。例如:
176 lines (175 loc) • 5.17 kB
TypeScript
import IBridge from "./bridge/IBridge";
import IMediatorConstructor from "./mediator/IMediatorConstructor";
import IPlugin from "./plugin/IPlugin";
/**
* @author Raykid
* @email initial_r@qq.com
* @create date 2017-09-06
* @modify date 2017-09-06
*
* Engine模组是开发框架的引擎部分,包括业务模块系统、应用程序启动和初始化、弹窗和场景管理器等与项目开发相关的逻辑都在这个模组中
* 这个模组的逻辑都高度集成在子模组中了,因此也只是收集相关子模组
*/
export declare enum InitStep {
/** 框架尚未开始初始化 */
Uninit = 0,
/** 框架已准备好初始化 */
ReadyToInit = 1,
/** 开始执行初始化 */
StartInit = 2,
/** 版本号系统初始化完毕 */
VersionInited = 3,
/** 表现层桥初始化完毕 */
BridgesInited = 4,
/** 预加载,可能会触发多次,每次传递两个参数:预加载文件名或路径、预加载文件内容 */
Preload = 5,
/** 开始打开首个模块 */
OpenFirstModule = 6,
/** 首个模块打开完毕,初始化流程完毕 */
Inited = 7
}
export default class Engine {
private _initParams;
/**
* 获取初始化参数
*
* @readonly
* @type {IInitParams}
* @memberof Engine
*/
readonly initParams: IInitParams;
private _loadElement;
private _initStep;
/**
* 获取框架初始化进程
*
* @readonly
* @type {InitStep}
* @memberof Engine
*/
readonly initStep: InitStep;
/**
* 初始化Engine
*
* @param {IInitParams} params 初始化参数
* @memberof Engine
*/
initialize(params: IInitParams): void;
/**
* 添加错误监听函数
*
* @param {(evt?:ErrorEvent)=>void} handler 错误监听函数
* @memberof Engine
*/
listenError(handler: (evt?: ErrorEvent) => void): void;
private onAllBridgesInit;
private onPreloadOK;
private onModuleChange;
}
/** 再额外导出一个单例 */
export declare const engine: Engine;
export interface IInitParams {
/**
* 表现层桥数组,所有可能用到的表现层桥都要在此实例化并传入
*
* @type {IBridge[]}
* @memberof OlympusInitParams
*/
bridges: IBridge[];
/**
* 首模块类型,框架初始化完毕后进入的模块
*
* @type {IMediatorConstructor}
* @memberof OlympusInitParams
*/
firstModule: IMediatorConstructor;
/**
* 会在首个模块被显示出来后从页面中移除
*
* @type {(Element|string)}
* @memberof OlympusInitParams
*/
loadElement?: Element | string;
/**
* 环境字符串,默认为"dev"
*
* @type {string}
* @memberof IInitParams
*/
env?: string;
/**
* 是否要使用版本机制,默认为true
*
* @type {boolean}
* @memberof IInitParams
*/
hasVersion?: boolean;
/**
* 加载version.cfg文件的版本号,不传则使用随机时间戳作为版本号
*
* @type {string}
* @memberof IInitParams
*/
version?: string;
/**
* 消息域名字典数组,首个字典会被当做默认字典,没传递则会用当前域名代替
*
* @type {{[env:string]:string[]}}
* @memberof IInitParams
*/
hostsDict?: {
[env: string]: string[];
};
/**
* CDN域名列表,若没有提供则使用host代替
*
* @type {{[env:string]:string[]}}
* @memberof IInitParams
*/
cdnsDict?: {
[env: string]: string[];
};
/**
* 插件列表
*
* @type {IPlugin[]}
* @memberof IInitParams
*/
plugins?: IPlugin[];
/**
* 短名称路径字典,key是短名称,value是路径
*
* @type {{[key:string]:string}}
* @memberof IInitParams
*/
pathDict?: {
[key: string]: string;
};
/**
* 预加载数组或字典,如果是字典则key为短名称,value为资源路径
* 会在表现层桥初始化完毕后、框架初始化完毕前加载,加载结果会保存在AssetsManager中
*
* @type {string[]}
* @memberof IInitParams
*/
preloads?: string[];
/**
* 初始化进度变化时调用,第一个参数为进度数值,范围是[0, 1];第二个参数是所在步骤枚举值;第三个参数是步骤提供的参数列表
*
* @memberof IInitParams
*/
onInitProgress?: (progress?: number, step?: InitStep, ...args: any[]) => void;
/**
* 框架初始化完毕时调用,可以返回Promise以异步执行后续流程
*
* @type {()=>void|Promise<void>}
* @memberof IInitParams
*/
onInited?: () => void | Promise<void>;
/**
* 项目出现报错时调用,提供Error对象和ErrorEvent对象
*
* @memberof IInitParams
*/
onError?: (evt?: ErrorEvent) => void;
}