简单的依赖加载器实现

为了验证闭包的学习,有必要实现一个简单的依赖加载器。

代码实现

var myModules=(function () {
    
    //保存所有定义的模块
    var modules={};

    /**
     *定义新模块,接收3个参数
     *name:模块名
     *deps:模块依赖的其他模块
     *impl:模块的定义
    **/ 
    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];
    }
    //暴露api
    return {
        define: define,
        get: get
    }
})()

使用

myModules.define('bar',[],function () {
    function hello (who) {
        //代码体
    }
    return {
        hello:hello
    }
})

myModules.define('foo',['bar'],function (bar) {
    functin hello2 () {
        //代码体
    }
    return {
        hello2:hello2
    }
})

var bar=myModules.get('bar');
var foo=myModules.get('foo');
  • 内容转自《你不知道的Javascript》
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 179,777评论 25 708
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,867评论 19 139
  • 《奥术魔法的派系》 奥术魔法的派系 - 综述 (缺失中) 奥术魔法的派系 - 防护系 <由技艺高超之大法师安斯雷姆...
    秘计阅读 3,535评论 2 3
  • 大学毕业的这一年,我参加过几场婚礼,见证了从校园爱情走入婚姻的幸福,看着新郎新娘拥抱哽咽的时候,我也会一个人默默地...
    王姑娘sunshine阅读 713评论 1 4
  • 正月十五是元宵,佳节送来喜气洋洋,我们当地的文化是吃甜糊,赏花灯、猜字谜、放烟花、真的是热闹非凡啊!
    章智豪阅读 261评论 0 0

友情链接更多精彩内容