日期:2014-05-16 浏览次数:20440 次
var pure = pure || {};
pure.jquery = function( window, undefined ) {
// jQuery 实现代码,略
// 在 window 对象上附加 jQuery 对象
window.jQuery = jQuery;
};
var pure = pure || {};
pure.tmpl = function( window, undefined ) {
// 其他代码,略
// 扩展 jQuery 对象(实例方法)
jQuery.fn.extend({
tmpl: function( data, options, parentItem ) { ... },
template: function( name ) { ... },
domManip: function( args, table, callback, options ) { ... });
});
// 扩展 jQuery 对象(静态方法)
jQuery.extend({
tmpl: function( tmpl, data, options, parentItem ) { ... },
template: function( name, tmpl ) { ... },
encode: function( text ) { ... }
});
// 其他代码,略
};
pure.render = function(partial, file, func) {
// 一些模拟函数重载的代码,略
// 创建用于解析 HTML 文件的 DOMParser
var parser = new DOMParser();
// 解析 HTML 文件
parser.parse(file);
// 构造 window 对象
var window = {
// 从 parser 中获取 document
document : parser.getDocument(),
// 由于不能直接在 Elemnt 上附加数据(因为实际上 Element 是 Java 对象)
// 因此我们用一个 HashMap 存放这些数据
//(Element作为 key,JavaScript 对象作为值)
cache : new HashMap()
};
// 依次调用 pure.jquery 和 pure.tmpl,
// 从而在 window 对象上附加 jQuery 对象
pure.jquery(window);
pure.tmpl(window);
// 调用传进的函数,以 window.jQuery 作为参数
// 这个函数实际上将修改 window.document
func(window.jQuery);
// 返回结果:代码片段或完整的 HTML
var doc = window.document.documentElement;
return partial ?
pure.html(doc.lastChild) :
pure.outerHtml(doc, true);
}