由于r.js将AMD模块编译成一个大文件,因此"异步"在异步模块定义?

时间:2013-04-13 05:23:47

标签: javascript require amd r.js

一旦你使用像r.js这样的东西将所有模块捆绑成一个大文件,我发现有点难以理解AMD架构的异步方面存在。

使用r.js而不是简单地允许require.js异步加载谨慎的js而不阻塞DOM有什么好处(除了缩小之外)?当然,只需要加载应用程序当前所需的内容(vanilla require.js),而不是加载应用程序可能需要的所有内容(编译r.js)。

2 个答案:

答案 0 :(得分:2)

如果您决定制作一个捆绑产品,那就没有单一的好处,只是缺点,因为所有你得到的是包含样板的代码包。

如果您正在寻找干净的解决方案,请尝试使用CommonJS样式,没有样板,并使用正确的工具,它比AMD快得多(因为异步磁盘操作比异步网络操作更快),使用CommonJS,您的代码也变得与环境无关,因此你可以在服务器(Node.js)和客户端上加载你的模块,不需要额外的配置/黑客。

检查Webmake(我是它的作者)我用它开发了几年。我一直没有回头。

还检查一些AMD - > CommonJS过渡成功案例:http://esa-matti.suuronen.org/blog/2013/03/22/journey-from-requirejs-to-browserify/

答案 1 :(得分:0)

我会为你的公司做个例子。我们有单页模块Web应用程序(应用程序中的每个选项卡都是由分离的团队开发的)。每个团队都拥有自己的代码,并使用一些常见的部分。 在模块中访问公共部分有require,因此他们确信它是可访问的(在bundlead脚本和服务器上的路径是相同的)。 这样就可以为模块制作捆绑文件,而这些模块里面没有任何东西。