一直好奇像node.js,require.js的模块化是怎么作的,在看了《你不知道的javascript》后,对js的模块化有了一些简单的了解。这本书真的还不错。javascript
书里讲述了js的模块化的原理 和 现代js实现模块化的简单的写法,下面直接上代码:java
<script type="text/javascript">
<!-- javascript 中的模块化 -->
<!-- 建立定义模块函数 -->
var Module = (function(){
var modules = {};node
//建立模块
function define(name,deps,fun){//name:模块名称,deps:依赖模块,func: 模块方法app
for (var i = 0; i < deps.length; i++) {
deps[i] = modules[deps[i]];
}
modules[name] = fun.apply(fun,deps); //这里依赖注入的关键,把依赖的模块传给fun模块化
}函数
//模块的get()
function get(name){
return modules[name];
}测试
return {
define:define,
get:get
};ui
})();spa
//定义一个行为模块(喝酒)
Module.define("drunk",[],function(){ip
function drunking(){
console.log("can drunk !");
}
return {
drunking:drunking
};
});
//定义一个模块,建立学生类
Module.define("student",["drunk"],function(drunk){
function CreateStudent(name,age,isDrunk){
var obj = new Object();
obj.name = name;
obj.age = age;
obj.eat = function(){
console.log("Everyone can eat !")
};
if (isDrunk) {
obj.du = drunk.drunking;
} else {
obj.du = function(){
console.log("can not drunk !");
}
}
return obj;
}
return {
createStudent:CreateStudent
};
});
//测试
var s1 = Module.get("student").createStudent("lee",12); s1.eat(); s1.du();