seajs經過module.constructor.prototype擴展公共方法

看了一遍關於《擴展SeaJS模塊定義中的module參數的應用示例》講得很不錯!本身就嘗試一下!javascript

http://limu.iteye.com/blog/1136712 html

https://github.com/seajs/seajs/issues/67java

爲了可以預加載公共部分模塊!使用sea.js提供的preload模塊功能!git

在安裝了官方的項目工具spm後,直接 spm install -g seajs-preloadgithub

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>sea.js</title>
		<script type="text/javascript" src="../../sea-modules/sea.js"></script>
		<script type="text/javascript" src="../../sea-modules/seajs-preload.js"></script>
	</head>
	<body>
		<div id="block">1111</div>
	</body>
</html>
<script type="text/javascript">
seajs.config({
	base : "../../sea-modules/",
	paths : {
		"mPath" : "../../static/module/",
	},
	alias : {
		"public" : "mPath/public"
	},
	preload : [
		"public"
	]
});
seajs.use("mPath/moduleA");
</script>

公共模塊部分,模仿了jqery的html方法工具

define(function(require, exports, module) {

	var mp = module.constructor.prototype;

		mp.mJq = function() {

			var elem;

			(function(args){
				if (typeof args[0] === 'string') {
					elem = document.getElementById(args[0]);
				}
			})(arguments);

			var mJquery = (function(){
				return elem;
			})();

			mJquery.html = function() {
				if (typeof elem == 'object' && typeof arguments[0] != 'undefined') {
					elem.innerHTML = arguments[0];
				} else {
					return elem.innerHTML;
				}
			}

			return mJquery;
		};
});

在其餘模塊調用ui

define(function(require, exports, module) {
	var $ = module.mJq;
	console.log($("block").html());
	$("block").html("halo");
});
相關文章
相關標籤/搜索