作者 : zhanhailiang 日期 : 2012-10-30
闲暇之余,阅读了下新浪微博的基本公用库代码
var STK = function () {
var a = {},
b = [];
a.inc = function (a, b) {
return !0
};
// 完整命名空间
a.register = function (c, d) {
var e = c.split("."),
f = a,
g = null;
while (g = e.shift()) {
if (e.length) {
f[g] === undefined && (f[g] = {});
f = f[g];
} else if (f[g] === undefined) {
try {
f[g] = d(a);
} catch (ex) {
b.push(ex);
}
}
}
};
// 短命名空间
a.regShort = function (b, c) {
if (a[b] !== undefined) {
throw "[" + b + "] : short : has been register";
}
a[b] = c;
};
// IE检测
a.IE = /msie/i.test(navigator.userAgent);
// 获取DOM结点
a.E = function (a) {
return typeof a == "string" ? document.getElementById(a) : a;
};
a.C = function (a) {
var b;
a = a.toUpperCase();
a == "TEXT" ? b = document.createTextNode("") :
a == "BUFFER" ? b = document.createDocumentFragment() : b = document.createElement(a);
return b;
};
// 日志工具类,记录到闭包数组b中
a.log = function (a) {
b.push("[" + (new Date).getTime() % 1e5 + "]: " + a);
};
// 错误信息记录在闭包数组b中
a.getErrorLogInformationList = function (a) {
return b.splice(0, a || b.length)
};
return a
}();
$Import = STK.inc;
// 声明命名空间core.func.empty
STK.register("core.func.empty", function () {
return function () {}
});
// 映射短命名空间
(function () {
var a = STK.core,
b = {
tween: a.ani.tween,
tweenArche: a.ani.tweenArche,
arrCopy: a.arr.copy,
arrClear: a.arr.clear,
hasby: a.arr.hasby,
unique: a.arr.unique,
foreach: a.arr.foreach,
isArray: a.arr.isArray,
inArray: a.arr.inArray,
arrIndexOf: a.arr.indexOf,
findout: a.arr.findout,
domNext: a.dom.next,
domPrev: a.dom.prev,
isNode: a.dom.isNode,
addHTML: a.dom.addHTML,
insertHTML: a.dom.insertHTML,
setXY: a.dom.setXY,
contains: a.dom.contains,
position: a.dom.position,
trimNode: a.dom.trimNode,
insertAfter: a.dom.insertAfter,
insertBefore: a.dom.insertBefore,
removeNode: a.dom.removeNode,
replaceNode: a.dom.replaceNode,
Ready: a.dom.ready,
setStyle: a.dom.setStyle,
setStyles: a.dom.setStyles,
getStyle: a.dom.getStyle,
addClassName: a.dom.addClassName,
hasClassName: a.dom.hasClassName,
removeClassName: a.dom.removeClassName,
builder: a.dom.builder,
cascadeNode: a.dom.cascadeNode,
selector: a.dom.selector,
sizzle: a.dom.sizzle,
addEvent: a.evt.addEvent,
custEvent: a.evt.custEvent,
removeEvent: a.evt.removeEvent,
fireEvent: a.evt.fireEvent,
fixEvent: a.evt.fixEvent,
getEvent: a.evt.getEvent,
stopEvent: a.evt.stopEvent,
delegatedEvent: a.evt.delegatedEvent,
preventDefault: a.evt.preventDefault,
hotKey: a.evt.hotKey,
memorize: a.func.memorize,
bind: a.func.bind,
getType: a.func.getType,
methodBefore: a.func.methodBefore,
timedChunk: a.func.timedChunk,
funcEmpty: a.func.empty,
ajax: a.io.ajax,
jsonp: a.io.jsonp,
ijax: a.io.ijax,
scriptLoader: a.io.scriptLoader,
require: a.io.require,
jsonInclude: a.json.include,
jsonCompare: a.json.compare,
jsonClone: a.json.clone,
jsonToQuery: a.json.jsonToQuery,
queryToJson: a.json.queryToJson,
jsonToStr: a.json.jsonToStr,
strToJson: a.json.strToJson,
objIsEmpty: a.obj.isEmpty,
beget: a.obj.beget,
cascade: a.obj.cascade,
objSup: a.obj.sup,
parseParam: a.obj.parseParam,
bLength: a.str.bLength,
dbcToSbc: a.str.dbcToSbc,
leftB: a.str.leftB,
trim: a.str.trim,
encodeHTML: a.str.encodeHTML,
decodeHTML: a.str.decodeHTML,
parseURL: a.str.parseURL,
parseHTML: a.str.parseHTML,
queryString: a.str.queryString,
htmlToJson: a.util.htmlToJson,
cookie: a.util.cookie,
drag: a.util.drag,
timer: a.util.timer,
jobsM: a.util.jobsM,
listener: a.util.listener,
winSize: a.util.winSize,
pageSize: a.util.pageSize,
templet: a.util.templet,
queue: a.util.queue,
stack: a.util.stack,
swf: a.util.swf,
URL: a.util.URL,
scrollPos: a.util.scrollPos,
scrollTo: a.util.scrollTo,
getUniqueKey: a.util.getUniqueKey,
storage: a.util.storage,
pageletM: a.util.pageletM
};
for (var c in b) STK.regShort(c, b[c])
})();
// 其余略,大致看了下,使用了
1.jQurey Sizzle选择器引擎
2.easeTemplate模板
3.BigPipe技术的使用
4.其它都是些很常规的封装,此处略去N字
最后说一句,用jQuery会死啊!!!