2015-04-21 91 views
0

我正在構建一個相當複雜的angular.js應用程序的基本輪廓。由於在瀏覽器中支持cjs模塊,因此我這次選擇browserify over require.js。但現在唯一讓我難以理解的是browserify在同一個文件中捆綁每個'require'調用。因此,對於例如,如果我有模塊:使用帶角度的browserify

模塊 - (需要angular.js和jQuery)

模塊 - B(需要angular.js和jQuery)

什麼browserify需要做的是,它將在MODULE-A和MODULE-B中捆綁angular和jQuery,這將首先增加代碼庫的大小。當我嘗試與require.js進行比較時,顯然需要僅加載angular.js一次。那麼這是在性能和​​靈活性之間的一個已知折衷?

它是如何設想的?請對此作一些闡述。

回答

0

如果這兩個模塊需要使用相同版本的angular.js和jQuery,那麼browserify將只在該包中包含一次。但是,如果他們使用不同的版本,則會包含兩次。這是設計。

如果這不是你所看到的問題,確保您使用的是最新browserify的版本有舊版本的幾個相關的bug:

+0

我不明白的是,bro​​wserify如何能夠確定angular.js是否已經與其他模塊捆綁在一起,然後不會將其包含在其他模塊中 – beNerd

+0

如果它真的被粘貼到t他另一個模塊的代碼(這打破了模塊的全部目的),那麼它就不會知道。但是如果它通過require()包含,那麼它可以跟蹤所有模塊和版本的 ,這樣可以避免重複。 (這可能不是它正在做的事情,但你明白了,如果你想確切知道它在做什麼,你可以閱讀源代碼。) – Trott