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

mar*_*sen 9 javascript amd

AMD似乎是根据需要加载JavaScript模块的最佳实践.

这应该适用于大型Web应用程序,其中用户只使用一小部分可用功能.

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

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

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

Mic*_*zyn 9

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

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

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

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


mar*_*sen 6

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

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

它们的映射可以在build.js中定义,如此示例项目中所示