olympus-r
Version:
一个力求简单易用的前端开发框架 #### 开发语言 TypeScript #### 核心架构 MVC #### 模块间通讯和解耦 采用事件机制,利用一个全局唯一的事件派发器进行模块间通讯,解耦模块间依赖 #### 表现层结构 使用桥接模式拆分接口与实现,达到一套核心驱动多套表现层的目的(目前支持DOM、Egret、PixiJS三种表现层),同时支持表现层的未来可扩展性 #### TypeScript装饰器注入 框架提供TypeScript装饰器注入功能,便捷获取托管对象。例如:
147 lines (146 loc) • 6.07 kB
TypeScript
import IObservable from "../../core/observable/IObservable";
import Dictionary from "../../utils/Dictionary";
import { BindForExpType } from "../bind/BindManager";
import { EvalExp } from '../bind/Utils';
import IMediator from "../mediator/IMediator";
import IMediatorConstructor from "../mediator/IMediatorConstructor";
import { IResponseDataConstructor } from "../net/ResponseData";
/**
* @author Raykid
* @email initial_r@qq.com
* @create date 2017-11-24
* @modify date 2017-11-24
*
* 绑定工具集
*/
export interface IBindCommand {
/**
* 执行绑定命令
*
* @export
* @param {IMediator} mediator 所属的中介者
* @param {ICompileTarget} currentTarget 要编译的目标显示对象
* @param {*} target 绑定命令本来所在的对象
* @param {any[]} envModels 环境变量数组
* @param {...any[]} args 命令参数列表
*/
(mediator: IMediator, currentTarget: ICompileTarget, target: any, envModels: any[], ...args: any[]): void;
}
export interface IBindParams {
/**
* 绑定命令原本所在对象
*
* @type {*}
* @memberof IBindParams
*/
target: any;
/**
* 绑定命令函数
*
* @type {IBindCommand}
* @memberof IBindParams
*/
cmd: IBindCommand;
/**
* 绑定命令参数列表
*
* @type {any[]}
* @memberof IBindParams
*/
args: any[];
/**
* 指令可以自己设置所需记录的属性
*
* @memberof IBindParams
*/
[key: string]: any;
}
export interface ICompileTarget {
/**
* 绑定命令列表
*
* @type {IBindParams[]}
* @memberof ICompileTarget
*/
__bind_commands__?: IBindParams[];
/**
* 其他可能的属性或方法
*/
[key: string]: any;
}
export interface IStopLeftHandler {
(target: any, bindTargets: Dictionary<any, any>[], leftHandlers: IStopLeftHandler[]): void;
}
export declare function listenOnOpen(prototype: any, before?: (mediator: IMediator) => void, after?: (mediator: IMediator) => void): void;
export declare function searchUIDepth(values: any, mediator: IMediator, target: any, callback: (currentTarget: any, target: any, key: string, value: any, leftHandlers?: IStopLeftHandler[], index?: number) => void, addressing?: boolean): void;
/**
* 添加编译命令到显示对象上(正向)
*
* @export
* @param {ICompileTarget} currentTarget 显示对象
* @param {*} target 编译命令本来所在的对象
* @param {IBindCommand} cmd 命令函数
* @param {...any[]} args 命令参数列表
*/
export declare function pushCompileCommand(currentTarget: ICompileTarget, target: any, cmd: IBindCommand, ...args: any[]): void;
/**
* 添加编译命令到显示对象上(反向)
*
* @export
* @param {ICompileTarget} currentTarget 显示对象
* @param {*} target 编译命令本来所在的对象
* @param {IBindCommand} cmd 命令函数
* @param {...any[]} args 命令参数列表
*/
export declare function unshiftCompileCommand(currentTarget: ICompileTarget, target: any, cmd: IBindCommand, ...args: any[]): void;
/**
* 编译显示对象,会先编译自身,然后再递归编译子对象
*
* @export
* @param {IMediator} mediator 显示对象所属的中介者
* @param {ICompileTarget} currentTarget 显示对象
* @param {any[]} [envModels] 环境变量数组
*/
export declare function compile(mediator: IMediator, currentTarget: ICompileTarget, envModels?: any[]): void;
/**
* 编译bindValue命令,不会中止编译
*/
export declare function compileValue(mediator: IMediator, currentTarget: ICompileTarget, target: any, envModels: any[], name: string, exp: string): void;
/**
* 编译bindExp命令,不会中止编译
*/
export declare function compileExp(mediator: IMediator, currentTarget: ICompileTarget, target: any, envModels: any[], exp: string): void;
/**
* 编译bindFunc命令,不会中止编译
*/
export declare function compileFunc(mediator: IMediator, currentTarget: ICompileTarget, target: any, envModels: any[], name: string, ...argExps: string[]): void;
/**
* 编译bindOn命令,不会中止编译
*/
export declare function compileOn(mediator: IMediator, currentTarget: ICompileTarget, target: any, envModels: any[], type: string, exp: string): void;
/**
* 编译bindIf命令,会中止编译,直到判断条件为true时才会启动以继续编译
*/
export declare function compileIf(mediator: IMediator, currentTarget: ICompileTarget, target: any, envModels: any[], exp: string): void;
/**
* 编译bindFor命令,会中止编译,直到生成新的renderer实例时才会继续编译新实例
*/
export declare function compileFor(mediator: IMediator, currentTarget: ICompileTarget, target: any, envModels: any[], name: string, exp: BindForExpType, mediatorCls?: IMediatorConstructor, declaredMediatorCls?: IMediatorConstructor, dataExp?: EvalExp): void;
/**
* 编译bindMessage命令,不会中止编译
*/
export declare function compileMessage(mediator: IMediator, currentTarget: ICompileTarget, target: any, envModels: any[], type: IConstructor | string, name: string, exp: string, observable?: IObservable): void;
/**
* 编译bindResponse命令,不会中止编译
*/
export declare function compileResponse(mediator: IMediator, currentTarget: ICompileTarget, target: any, envModels: any[], type: IResponseDataConstructor | string, name: string, exp: string, observable?: IObservable): void;
/**
* 搜索UI,取到目标节点,执行回调
*
* @export
* @param {*} values 值结构字典
* @param {*} ui ui实体
* @param {(ui:any, key:string, value:any, depth?:number)=>void} callback 回调
* @param {number} [depth=0] 遍历深度,方法会继续增加这个深度
*/
export declare function searchUI(values: any, ui: any, callback: (ui: any, key: string, value: any, depth?: number) => void, depth?: number): void;