2012-11-21 19 views
1

我寫了一個backbone.js應用程序,它使用require.js並與模型/,集合/等分開。然後我寫了另一個應用程序依賴於第一應用(和其他一些東西的文件佈局像這樣:?使用require.js的一個Backbone.js應用程序依賴於另一個:我如何包含孩子?

/scripts/appA/ 
      models/ 
      collections/ 
      views/ 
/scripts/appNeedsA/ 
      models/ 
      collections/ 
      views/ 

我怎麼放在needsA要求的appA下似乎是合乎邏輯給我,但不工作。如果我使用../../appA,該發現的appA但它的依賴無法找到,因爲根本是錯誤的。

define(
    ['underscore', 'backbone', '../appA'], 
    function (_, Backbone, appA) { 
    ... 
    } 

回答

0

正確的解決方案是:

define(
    ['underscore', 'backbone', 'appA/views/whatever'], 
    function (_, Backbone, appAWhateverView) { 
    ... 
} 

,並設置你的require.config路徑包括:

require.config({ 
    paths: { 
     appA: '../appA' 
    } 
}); 
2

它可能不是你所希望看到的答案但是,這裏有一種方法:

https://github.com/busticated/RequireLoadingExample

想法是,您使用消費應用程序將使用的路徑定義您的模塊代碼,然後在消耗的應用程序中適當地爲路徑別名。

在我的例子中,我有一個頂級的main.js文件,它同時引入了app1.js和app2.js模塊。這兩個模塊都依賴於它們自己的子目錄中的模塊 - 例如app1.js使用一個/ mods/a.js和一個/ mods/b.js。我有另一個main(main-one.js)文件,它位於one /目錄下。該文件稱:

require.config({ 
    paths: { 
     'jquery': 'libs/jquery', 
     'one': '.' 
    } 
}); 

時app1.js負載,一個/ MODS/a.js路徑轉換爲./mods/a.js和發現/加載沒有問題所以現在。

你應該可以在我的回購上面加載index.html & one.html在js控制檯打開的瀏覽器中查看它的所有工作。

希望它有幫助!

相關問題