【问题标题】:How do you bundle multiple AMD modules in a single file?如何将多个 AMD 模块捆绑在一个文件中?
【发布时间】:2012-08-15 21:58:30
【问题描述】:

AMD 似乎是按需加载 javascript 模块的最佳实践。

这应该适用于用户只使用一小部分可用功能的大型网络应用程序。

我读过优化器,它将所有需要的模块连接到一个文件中,我读过没有优化,即使用异步请求加载每个模块。

两者似乎都不适合这个用例:使用请求加载每个模块可能会很快导致大量请求,而优化会迫使您下载所有代码。 p>

有没有办法将多个模块捆绑到一个文件中?

【问题讨论】:

    标签: amd javascript


    【解决方案1】:

    是的。 一般来说,将应用程序分成这么多文件并用 AMD 加载它们只对开发有好处。它有助于保持代码简洁易懂;每个模块都包含视图、模型、控制器并且每个模块都是一个单独的文件,这很合乎逻辑。

    然而,大量的请求在生产中没有意义。因此,您应该使用优化器将文件编译并最小化为一个(或几个)文件,以提高性能和用户体验。

    如果您使用 RequireJS,请参考 http://requirejs.org/docs/optimization.html#wholeproject — 它解释了如何使用 RequireJS 提供的 r.js 工具。

    例如,如果我的应用程序由公共区域、管理和一个非常复杂的注册表单组成,每个都由数百个视图/模型/控制器组成我可能会将我的代码编译成 4 个文件 :普通,公共,管理员,注册。然后,当用户进入特定区域时,将异步加载适当的文件。

    【讨论】:

    • 感谢您确认我的想法,但这不完全是我问题的答案:RequireJS 可以解析构建这 4 个不同的文件,并在浏览器中解析模块到文件名吗?我知道我可以使用多个构建文件手动创建 4 个带有一堆模块的优化文件。这让我只剩下客户端了——它怎么知道加载正确的文件?
    • 是的,在我链接到的页面上有说明。你读过markmarijnissen吗? § 9 和 § 10:requirejs.org/docs/optimization.html#wholeproject
    【解决方案2】:

    RequireJS 用他们的优化工具支持这个用例。

    通过 build.js 中的适当配置,可以将其配置为将多个模块捆绑在多个文件中。

    它们的映射可以在build.js 中定义,如example project 所示

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-31
      • 2016-06-19
      • 2018-03-26
      • 1970-01-01
      相关资源
      最近更新 更多