RIAEasy之基础包(一)
前篇说到,RIAEasy对dojo进行了一个整体包装,即rias/rias.js,其代码如下:
var rias = {};
define([
"dojo/has"
], function(has) {
///不在前面加载,是为了保障加载的是打包后的 dojo/dojo 和 dijit/dijit(host-browser)
require(["rias/_rias"], function(){
if(!rias.require.packs.appRoot){
rias.require.packs.appRoot = {name: 'appRoot', location: '../appRoot', main: 'appRoot'};
}
if(has("host-browser")){
if(!rias.require.packs.appModule){
rias.require.packs.appModule = {name: 'appModule', location: '../appModule', main: 'appModule'};
}
require(["dijit/dijit"], function(){
require(["rias/riasw/riasw"], function(){
});
});
}else{
require(["rias/riass/riass"], function(){
});
}
});
return rias;
});
从代码上看,rias包分为前端(包含dom,host-browser)和服务器端(不包含dom)两个部分,而rias/_rias.js则是两者共用模块,主要完成不包含dom内容的运行环境定义、lang重构、切片和消息机制定义、Destroyable重构等功能:
运行环境定义如下:
rias = dojo.getObject("rias");
rias.config = config;
rias.isDebug = config.isDebug;
rias.has = has;
rias.i18n = dojo.delegate(dojo.i18n);
rias.locale = dojo.locale;
rias.define = define;
rias.require = require;
rias.baseUrl = rias.require.baseUrl;
rias.toUrl = rias.require.toUrl;
rias.declare = declare;
rias.setObject = dojo.setObject;
rias.getObject = dojo.getObject;
可以看出,rias包基本沿用了dojo的环境定义。
lang重构主要完成了对dojo的lang模块引用,并做了一些扩展,比如:
扩展了String和Array的一些操作函数:
rias.trim;
rias.trimStart;
rias.trimEnd;
rias.startWith;
rias.endWith;
rias.firstLowerCase;
rias.firstUpperCase;
rias.lastString;
rias.indexOf;
rias.indexOfByAttr;
rias.lastIndexOf;
rias.concat;
增加了一些常用函数:
rias.isObjectExact;
rias.isObjectSimple;
rias.likeNumber;
rias.toNumber;
rias.toFixed;
rias.toInt;
rias.toStr;
rias.toHTML;
rias.min;
rias.max;
rias.toJson;
rias.mixinDeep;
rias.hostBrowser;
rias.isDomNode;
rias.isDijit;
rias.isRiasw;
rias.isRiasModule;
切片和消息机制则基本沿用(引用)了dojo的aspect和topic/publish/subscribe。
Destroyable重构是_rias.js中比较重要的一项内容,将在下一篇中详细介绍。