2015-04-21 48 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