如何将多个AMD模块捆绑在一个文件中?

时间:2012-08-15 21:58:31

标签: amd javascript

AMD似乎是根据需要加载JavaScript模块的最佳做法。

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

我已经阅读了优化器,它将所有必需的模块连接成一个文件,我读过没有优化,即用异步请求加载每个模块。

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

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

2 个答案:

答案 0 :(得分:9)

是。 通常将应用程序划分为如此多的文件并将其加载到AMD中仅对开发有利。它有助于保持代码清洁和易懂;每个模块都包含视图,模型,控制器,每个模块都是一个单独的文件,这是非常合乎逻辑的。

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

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

例如,如果我的应用程序由公共区域,管理和非常复杂的注册表单构成,每个构建有数百个视图/模型/控制器我可能将我的代码编译成4个文件 :common,public,admin,sign_up。然后,当用户输入特定区域时,将异步加载适当的文件。

答案 1 :(得分:6)

RequireJS通过其优化工具支持此用例。

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

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

所示