我们喜欢RequireJS和AMD在开发过程中,我们可以编辑模块,在浏览器中重新加载,并立即看到结果。但是当需要将我们的模块连接成单一文件进行生产部署时,显然必须有AMD加载器,无论该加载器是RequireJS本身还是其较小的合作伙伴“杏仁”,如下所述:为什么级联的RequireJS AMD模块需要加载器?
http://requirejs.org/docs/faq-optimization.html#wrap
我的困惑是:为什么装载机是必需的?除非你有非常特殊的情况使得你需要在你的模块内部调用require()
调用,否则看起来一系列的AMD模块可以在没有加载器的情况下连接在一起。最简单的例子可能是一对模块,如下所示。
ModA.js:
define([], function() {
return {a: 1};
});
ModB.js:
define(['ModA'], function(A) {
return {b : 2};
});
鉴于这两个模块,似乎一个连接符可以简单地产生下面的文本,而不是负担生产服务器或浏览器带有RequireJS或Almond所需的额外带宽或计算。
我想,产生一个级联器(和我使用字形引号«»以示出从两个模块的片段上面已插入):
此,到目前为止我可以看,会正确地重现AMD的语义,至少有额外的粘连JavaScript。有没有这样的连接器?如果没有,我是否会傻傻地想我应该写一个 - 是否真的有很少的代码库由简单和干净的模块组成,用define()
编写,并且在那之后不需要进一步调用require()
进行异步取代码?
你是如何解决这个问题的?我发现使用杏仁,min文件大3k,然后连接文件(9K vs 6K)。 – Naor