Javascript 将jQuery(或下划线)与脚本加载程序一起使用的好处

Javascript 将jQuery(或下划线)与脚本加载程序一起使用的好处,javascript,jquery,requirejs,underscore.js,amd,Javascript,Jquery,Requirejs,Underscore.js,Amd,有关于AMD支持jQuery和下划线的讨论。这里的许多问题表明,开发人员在使用require或curl库时遇到问题。为什么不使用jQuery和下划线“原样”(以及它们自己的脚本元素)?为什么不使用像require这样的模块系统来处理实际的应用程序代码呢 例如,使用RequireJS的好处之一是能够将所有内容缩小并优化为一个文件,从而减小加载大小并减少请求 许多人盲目地关注文件的大小,而忘记了文件的数量也很重要,因为您需要对每个文件执行请求。客户端必须执行的请求越少越好 我将研究RequireJS

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

例如,使用RequireJS的好处之一是能够将所有内容缩小并优化为一个文件,从而减小加载大小并减少请求

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

我将研究RequireJS中的r.js,以了解更多关于优化的信息


回答你的问题: 单独添加jQuery和下划线将增加客户端的负载大小,并且还会添加两个请求,这不是最优的


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

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

首先:

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

因此,当您选择这种方式时,可以将AMD看作是“模块加载器API+编译器/汇编程序”包

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

这意味着,如果您可以使用其他工具进行构建,但不使用
r.js
(CurlJS有一个beta构建脚本。我有一个AMD构建脚本,很多其他人更喜欢自己的构建脚本)使用CurlJS。否则就用RequireJS

第二: jQuery、下划线等

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

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

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

换句话说,AMD系统可能依赖于您目前的内联脚本标记结构

我对AMD不太自信,但我的猜测是,如果您将AMD与jQuery等一起使用,您可以创建发布版本,只创建来自不同模块的单个JS文件。至少这是我的理解。