2019独角兽企业重金招聘Python工程师标准>>>
一直好奇像node.js,require.js的模块化是怎么做的,在看了《你不知道的javascript》后,对js的模块化有了一些简单的了解。这本书真的还不错。
书里讲述了js的模块化的原理 和 现代js实现模块化的简单的写法,下面直接上代码:
<script type="text/javascript">
<!-- javascript 中的模块化 -->
<!-- 创建定义模块函数 -->
var Module = (function(){
var modules = {};
//创建模块
function define(name,deps,fun){//name:模块名称,deps:依赖模块,func: 模块方法
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
};
})();
//定义一个行为模块(喝酒)
Module.define("drunk",[],function(){
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();