簡單的依賴加載器實現

為了驗證閉包的學習,有必要實現一個簡單的依賴加載器。

代碼實現

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》
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,556評論 25 708
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,991評論 19 139
  • 《奧術魔法的派系》 奧術魔法的派系 - 綜述 (缺失中) 奧術魔法的派系 - 防護系 <由技藝高超之大法師安斯雷姆...
    秘計閱讀 3,198評論 2 3
  • 大學畢業的這一年,我參加過幾場婚禮,見證了從校園愛情走入婚姻的幸福,看著新郎新娘擁抱哽咽的時候,我也會一個人默默地...
    王姑娘sunshine閱讀 660評論 1 4
  • 正月十五是元宵,佳節送來喜氣洋洋,我們當地的文化是吃甜糊,賞花燈、猜字謎、放煙花、真的是熱鬧非凡啊!
    章智豪閱讀 247評論 0 0