UNPKG

olympus-r

Version:

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

73 lines (72 loc) 1.79 kB
/** * @author Raykid * @email initial_r@qq.com * @create date 2017-10-09 * @modify date 2017-10-09 * * 网络工具集,框架内部使用 */ function handleObj(obj) { if (!obj) return obj; else if (obj instanceof Array) return packArray(obj); else if (obj.pack instanceof Function) return obj.pack(); else if (typeof obj == "object") return packMap(obj); else return obj; } export function packArray(arr) { if (arr == null) return null; var result = arr.map(handleObj); return result; } export function parseArray(arr, cls) { if (arr == null) return []; // 不支持二维数组嵌套 var result = []; for (var i = 0, len = arr.length; i < len; i++) { var value = arr[i]; if (cls == null) { // 子对象是个基础类型 result.push(value); } else { // 子对象是个自定义类型 result.push(new cls().parse(value)); } } return result; } export function packMap(map) { if (map == null) return null; var result = {}; for (var key in map) { var obj = map[key]; result[key] = handleObj(obj); } return result; } export function parseMap(map, cls) { if (map == null) return {}; // 不支持二维数组嵌套 var result = {}; for (var key in map) { var value = map[key]; if (cls == null) { // 子对象是个基础类型 result[key] = value; } else { // 子对象是个自定义类型 result[key] = new cls().parse(value); } } return result; }