我一直在网上搜索各种存储库和博客,似乎无法找到我要找的东西。
问题
使用像RequireJS这样的东西通过AMD构建代码时,您可以设置模块,如下所示:
第一单元:
define(['a'], function () {
return {
methodOne: function () {
return 'something';
}
}
});
第二单元:
define(['b'], function () {
return {
methodTwo: function () {
return 'something';
}
}
});
这对构建项目有很大帮助。它有助于将问题分成多个文件而不是一个大文件。
但是如何将其优化为一个文件?我认为你会使用某种构建工具,并提出类似的东西:
define(function () {
return {
/* other dependency functions */
methodOne: function () {
return 'something';
},
methodTwo: function () {
return 'something';
}
}
});
适用于AMD环境。这基本上只是将所有模块组合成一个文件。
所以我有几个问题:
我尝试/发现的内容
看起来RequireJS有自己的构建工具(http://requirejs.org/docs/optimization.html)来做这样的事情。在浏览完文档并为自己尝试构建工具之后,我发现它只是将所有defines
组合到一个文件中。我在这里错过了什么吗?这不是非常有用。
UMD模式似乎是规范化您的代码以使用AMD,Node和浏览器(http://know.cujojs.com/tutorials/modules/authoring-umd-modules,https://github.com/umdjs/umd)。这是否意味着我使用的每个AMD文件都必须转换为UMD?这似乎很头疼。
我偶然发现了uRequire(http://urequire.org/),这似乎是我正在寻找的答案。能够从AMD或CommonJS模式构建UMD代码。
这是一个一直困扰着我的问题。 UMD看起来很酷,但似乎挂机很容易使您的代码可用于浏览器。
非常感谢任何帮助。
答案 0 :(得分:0)
关于RequireJS优化器的用处,我使用RequireJS rjs优化器超过一年来创建必须组合(并同步)的模块包。
这非常有用,因为我节省了请求的数量,也节省了异步开销,其中require需要弄清楚所有依赖树,因为这根本不需要发生。
例如,如果您考虑更广泛的模块,也就是子应用程序甚至功能,您可以只为您的应用程序提供另一个讲座,而不是加载40个以上的requirejs模块,那么您将只加载5个子应用程序/功能,它们的每个块都将完全同步。
关于UMD和uRequire,我建议你看看https://github.com/systemjs/systemjs - 这似乎是一个聪明的方法。然而uRequire似乎也很好。