日期:2014-05-16 浏览次数:20438 次
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);
}