一旦您使用 r.js 之类的东西将所有模块捆绑到一个大文件中,我发现有点难以理解 AMD 架构的异步方面存在于何处。
与简单地允许 require.js 在不阻塞 DOM 的情况下异步加载谨慎的 js 相比,使用 r.js 有什么好处(除了缩小)?当然,仅加载应用程序当前需要的内容(vanilla require.js)要比加载应用程序可能需要的所有内容(编译的 r.js)更快。
一旦您使用 r.js 之类的东西将所有模块捆绑到一个大文件中,我发现有点难以理解 AMD 架构的异步方面存在于何处。
与简单地允许 require.js 在不阻塞 DOM 的情况下异步加载谨慎的 js 相比,使用 r.js 有什么好处(除了缩小)?当然,仅加载应用程序当前需要的内容(vanilla require.js)要比加载应用程序可能需要的所有内容(编译的 r.js)更快。
如果您决定制作一个捆绑包,AMD 没有单一的好处,只有缺点,因为您得到的只是一堆代码与样板文件混合在一起。
如果您正在寻找干净的解决方案,请尝试 CommonJS 风格,没有样板,并且使用正确的工具,它比 AMD 快得多(因为异步磁盘操作比异步网络操作更快),使用 CommonJS,您的代码也变得与环境无关,所以您可以在服务器(Node.js)和客户端上加载你的模块,不需要额外的配置/黑客攻击。
检查Webmake(我是它的作者)我用它开发了几年。我从来没有回头。
还检查一些 AMD -> CommonJS 转换成功案例:http ://esa-matti.suuronen.org/blog/2013/03/22/journey-from-requirejs-to-browserify/
我会给你一个我公司的例子。我们有单页模块网络应用程序(应用程序中的每个选项卡都是由独立的团队开发的)。每个团队都有自己的代码,并使用一些通用部分。在模块中使用 require 访问公共部分,因此他们确信它是可访问的(bundlead 脚本和服务器上的路径相同)。这提供了为模块制作捆绑文件的可能性,这些文件里面没有所有内容。