1

有关于 AMD 对 jQuery 和下划线的支持的讨论。这里的许多问题表明,开发人员在使用这些库时遇到了 require 或 curl 的问题。为什么不使用 jQuery 并下划线“原样”(使用自己的脚本元素)?为什么不对实际的应用程序代码使用像 require 这样的模块系统呢?

4

3 回答 3

2

使用例如 RequireJS 的好处之一是能够将所有内容压缩和优化到一个文件中,从而使负载更小,请求更少。

许多人盲目地关注文件的大小,而忘记了文件的数量也很重要——因为您需要对每个文件进行请求。客户必须做的请求越少越好。

我会查看 RequireJS 中的 r.js 以了解有关优化的更多信息。


要回答您的问题:

分别添加 jQuery 和下划线会增加客户端的负载大小,并且还会添加两个请求,这不是最佳的。

jQuery 应该不再是添加到 RequireJS 的问题,您不需要填充或类似的东西。如果你确实想要下划线,你应该改用 LoDash,它支持 AMD,并且是下划线的性能优化版本。

于 2013-03-11T09:42:12.503 回答
1

我们在工作场所遇到的另一个用例是当您将应用程序嵌入到其他人的网站时。父站点可能已经在页面上运行了自己的 jQuery 代码。他们的 jQuery 代码可能与您的版本不同,它可能使用与您不同的插件,等等。因此,拥有自己的 jQuery 版本并且不将其泄漏到全局范围是在这种情况下的巨大胜利。

于 2013-03-11T15:40:54.793 回答
0

第一的:

AMD 风格的加载器只解决了一个问题——您可以避免在开发过程中将所有代码放在一个文件中。只有在最后“构建”AMD 树时,问题才会得到解决。如果你不这样做,你最终会收到更多的 HTTP 请求。

因此,在选择方式时,请将 AMD 视为“模块加载器 API + 编译器/汇编器”包。

虽然我个人更喜欢 CurlJS,但我必须说拥有r.js是 RequireJS 的一大卖点。

这意味着如果您可以使用其他东西进行构建,但是r.js(CurlJS 有一个beta构建脚本。我有一个 AMD 构建脚本http://prunejs.com/很多其他人更喜欢他们自己的构建脚本)使用 CurlJS。否则使用 RequireJS。

第二:jQuery、Underscore 等。

这些对您的 AMD 选择没有任何影响。它们可以继续是全球性的并照此使用。jQuery 甚至可以通过在看到 AMD 系统加载时将自己注册为 AMD 模块来帮助您(尽管以一种搞砸的方式):

使用 jQuery 作为依赖项而不用 RequireJS 加载 jQuery?

您可以继续通过脚本标签加载下划线,但为它创建一个伪 / 包装 AMD 模块:

define('underscore', function(){
    return window._
});

换句话说,AMD 系统可能会搭载在您当前的内联脚本标签结构之上

于 2013-03-12T18:41:20.413 回答