【问题标题】:Since r.js compiles AMD modules into one big file, where is the "asynchronous" in Asynchronous Module Definition?既然r.js将AMD模块编译成一个大文件,那么异步模块定义中的“异步”在哪里呢?
【发布时间】:2013-04-05 18:14:54
【问题描述】:

一旦您使用 r.js 之类的东西将所有模块捆绑到一个大文件中,我发现有点难以理解 AMD 架构的异步方面存在于何处。

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

【问题讨论】:

    标签: javascript require amd r.js


    【解决方案1】:

    如果您决定制作一个捆绑包,AMD 没有单一的好处,只有缺点,因为您得到的只是代码包和样板代码。

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

    检查Webmake(我是它的作者)我用它开发了几年。我从未回头。

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

    【讨论】:

      【解决方案2】:

      我会给你一个我公司的例子。我们有单页模块网络应用程序(应用程序中的每个选项卡都是由独立的团队开发的)。每个团队都有自己的代码,并使用一些通用部分。 在模块中使用 require 访问公共部分,因此他们确信它是可访问的(bundlead 脚本和服务器上的路径相同)。 这提供了为模块制作捆绑文件的可能性,模块中没有所有内容。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-02-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-06
        • 2013-07-07
        • 1970-01-01
        相关资源
        最近更新 更多