2012-03-29 42 views
1

使用Require.js,它非常穩定。Require.js並通過r.js進行優化:如何找出組合多個頁面模塊的最佳方式?

但是,我正在閱讀有關優化(http://requirejs.org/docs/optimization.html)使用r.js.

據我瞭解,它將頂層定義的模塊捆綁爲1個文件(很好,因爲:http-calls少,縮小)。

這似乎很好,當我只有1個pagetype定義,即:1套所需的模塊加載。但是,在任何普通網站中,您都有多個不同的頁面類型,每個頁面需要不同的模塊。

現在,我只是想知道r.js有多聰明?在確定將哪些模塊打包在一起時,它是否將所有多個頁面(具有不同的「需求」)都考慮在內,以便我不會爲X頁面類型獲得X捆綁的javascriptf-iles,即使模塊中存在大量重疊包含在每個這些捆綁腳本中。

我需要給優化器的任何提示,是否自動處理等?

澄清非常感謝,。

+0

不要認爲這是聰明的。認爲你可以做的最好的做法是將你的通用模塊優化爲common.js,並且從優化的頁面模塊中淺入地排除每個(使用過的)通用模塊。然後您的頁面將導入一個優化的頁面模塊,並導入優化的通用模塊。 – 2012-03-31 22:11:27

回答

1

我的理解是,優化器通過查找require()調用找到文件的依賴關係,並列出找到的內容。 (所以它只發現作爲文字字符串傳遞給require()的依賴關係。)然後,文件與其依賴關係(遞歸)組合到一個文件中,並最小化。

您可以控制進入配置模塊的內容。下面是一個示例:

({ 

baseUrl: "Website/Scripts", 
dir: "Staging/Scripts", 
modules: [ 
    { name: "main", include: ["Rotator"], exclude: ["jwPlayerDialog"] }, 
    { name: "jwPlayerDialog" } 
], 
paths: { 
    "jquery": "empty:" 
}, 
fileExclusionRegExp: /^\.|Microsoft|modernizr|unobtrusive|\.min\.|\.debug\./ 
}) 

如果關閉最小化,可以輕鬆查看每個文件中包含的內容。一個模塊可以包含在多個文件中。例如,上面的Rotator模塊將在main.js中,它仍然可以作爲Rotator.js

相關問題