javascript 模块化

一直好奇像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();

猜你喜欢

转载自my.oschina.net/u/3229305/blog/974028