Tag: 杏仁

为什么串联的RequireJS AMD模块需要加载器?

我们喜欢RequireJS和AMD在开发过程中,我们可以编辑一个模块,在我们的浏览器中重新加载,并立即看到结果。 但是,当我们将模块连接成一个单独的文件进行生产部署时,显然必须有一个AMD加载器,无论该加载器是RequireJS本身,还是小型合作伙伴“杏仁”,如下所述: http://requirejs.org/docs/faq-optimization.html#wrap 我的困惑是:为什么装载机是必要的? 除非你有非常不寻常的情况,使得你require()在你的模块中进行require()调用,否则看起来一系列的AMD模块可以在没有加载器的情况下连接在一起。 最简单的例子可能是像下面这样的一对模块。 ModA.js: define([], function() { return {a: 1}; }); ModB.js: define(['ModA'], function(A) { return {b : 2}; }); 考虑到这两个模块,似乎一个连接器可以简单地生成以下文本,并且不会给生产服务器或浏览器带来RequireJS或Almond所需的额外带宽或计算负担。 我想象一个产生(我使用V形引号«,»来显示上面两个模块的代码片段已被插入的连接符): (function() { var ModA = «function() { return {a: 1}; }»(); var ModB = «function(A) { return {b : 2}; }»(ModA); return ModB; })(); 就我所知,这将正确地重现AMD的语义,并至less有一些额外的粘连JavaScript。 有没有这样的连接器? 如果不是的话,我是否会觉得自己应该写一个傻瓜 – 是否真的有很less的代码库,它们是用define()编写的简单和干净的模块组成的,而且不需要进一步的require()调用,代码提取?