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();