2012-04-16 60 views
1

我使用require.js開發了一個Web應用程序。
隨着整個事物的增長和增長,某些amd模塊的某些依賴列表也會增長 並且變得非常複雜(在我開始使用require.js之前,會提醒我在index.html頁面中有大量腳本標記)。
於是我開始把核心模塊 - 這些我總是需要 - 在新的AMD模塊:requirejs:縮短依賴列表

define(["config", "eventObj", "registry", "log", "userObj"], 
    function (conf, event, reg, log, user) { 
    var core = { 
     conf: conf, 
     event: event, 
     reg: reg, 
     log: log, 
     user: user 
    }; 
    return core; 
}); 

但由於這一變化,奇怪的事情發生,例如在同一時間這個「核心」是存在的,但後來,在另一個模塊中,它也被稱爲依賴關係,但它是未定義的。
有沒有更好的方法來縮短依賴列表,分組各種模塊,而不必將這些東西放在一個文件中?

+0

它可能是未定義的,因爲您在加載之前引用它?只要確定這是首先定義的,然後你就可以調用它。這應該能解決你的問題。 – 2012-04-16 15:42:29

回答

1

我們已經使用在BoilerplateJS了類似的方法,這個方法看起來清爽多了,如果你擔心可讀性:

define(function (require) { 

    return { 
     conf : require("config"), 
     event : require("eventObj"), 
     reg : require("registry"), 
     log: require("log"), 
     user : require ("userObj") 
    }; 
}); 

代碼從https://github.com/ectechno/boilerplatejs/blob/master/src/core/_boiler_.js

通過,但我不明白爲什麼你的設置不好好工作。你確定你指向正確的路徑嗎?

0

當你聲明的依賴路徑,這樣

define(["config", "eventObj", "registry", "log", "userObj"] 

它搜索目錄的依賴,其中該模塊被調用。因此,爲了避免這種情景,有一個乾淨的方式Require.js

require.config({ 
    baseUrl: "/another/path", 
    paths: { 
     "some": "some/v1.0" 
    } 
    }); 

定義路徑現在你可以用「一些」任何地方的依賴。這對於添加用戶模塊的依賴關係是可以的。但是,當定義一個核心模塊時,Janith上面提到的更加乾淨。正如我看到它已經縮短了依賴列表的方式。