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