美文网首页
现代的模块机制

现代的模块机制

作者: 白小虫 | 来源:发表于2017-03-11 23:53 被阅读169次

    大多数模块依赖加载器/管理器本质上都是将模块定义封装进一个友好的API。

    var MyModules = (function(){
    var modules = {};
    
    function define(name, deps, impl) {
        for(var i = 0; i < deps.length; i++) {
            deps[i] = modules[deps[i]];
        }
        modules[name] = impl.apply(impl, deps);
    }
    
    function get(name) {
        return modules[name];
    }
    
    return {
        define : define,
        get : get
    };
    })();
    

    这段的代码的核心是modeules[name] = imp.apply(impl, deps);,为了模块的定义引入包装函数(可以传入任何依赖),并且将返回值,也就是模块的API,储存在一个根据名字来管理的模块列表中。

    MyModules.define('bar', [], function() {
        function hellow(who) {
            return 'Let me introduce : ' + who;
        }
    
        return {
            hellow : hellow
        };
    });
    
    MyModules.define('foo', ['bar'], function() {
        var hungry = 'hippo';
    
        function awesome() {
            console.log(bar.hellow(hungry).toUpperCase());
        }
    
        return {
            awesome : awesome
        };
    });
    
    var bar = MyModules.get('bar');
    var foo = MyModules.get('foo');
    
    console.log(bar.hellow('hippo'));   //Let me introduce : hippo
    foo.awesome();  //LET ME INTRODUCE : HIPPO
    

    当函数可以记住并访问所在的词法作用域,即使函数是在当前词法作用域之外执行,这是就产生了闭包。

    摘自:2017年3月11日 《你不知道的javascript 上卷 - 5.5.1 现代的模块机制》

    相关文章

      网友评论

          本文标题:现代的模块机制

          本文链接:https://www.haomeiwen.com/subject/yfttnttx.html