是否只有jQuery的Ajax部分?

是否只有jQuery的Ajax部分? 问题是我不需要整个库,但只需要它的Ajax部分(我需要将这部分包含在几个iframe中)。

2016年更新

您可以使用此工具来构build自己的自定义jQuery版本。

jQuery Builder

从jQuery 2.1.1开始

完整文件大小unminified是: 241.55 Kb

Ajax仅缩小为: 49.60 Kb

这是一个减less5倍的大小。

在这里输入图像说明

达林已经说过,这是全部或没有。 JQuery的Ajax函数与其余的function密切相关。

还有其他一些独立的Ajax库,像Matt Kruse的Ajax工具箱 – 可能有帮助。

我会考虑加载完整的jQuery库。 如果你链接到CDN上的jQuery,加载时间将是微不足道的。

从jQuery 1.8开始,你可以这样做: LINK

您可以在youmightnotneedjquery.com上查看jQuery的标准javascript替代品

例如$.ajax post的替代方法是:

 var request = new XMLHttpRequest(); request.open('POST', '/my/url', true); request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8'); request.send(data); 

$.ajax get的替代方法是:

 var request = new XMLHttpRequest(); request.open('GET', '/my/url', true); request.onload = function() { if (request.status >= 200 && request.status < 400) { // Success! var resp = request.responseText; } else { // We reached our target server, but it returned an error } }; request.onerror = function() { // There was a connection error of some sort }; request.send(); 

另一种select是使用浏览器提供的内置fetch API。

这是一个示例代码片段:

 fetch('http://localhost:3000/users.json', { method: 'POST', mode: 'cors', redirect: 'follow', body: JSON.stringify({ user: { firstName: 'john', lastName: 'doe' } }), headers: new Headers({ 'Content-Type': 'application/json' }) }).then(function() { /* handle response */ }); 

这篇博文是对API的很好的介绍,并展示了更多的用例。

fetch并没有全面的跨浏览器支持(我认为主要是IE和Safari缺乏),但是有一些可以在当天使用的polyfill。

fetch polyfill: https : //github.com/github/fetch

旧的浏览器也需要一个Promise polyfill( 一个选项 , 另一个选项 )。

我在这里创build了一个自定义的jQuery 1.7.1版本:

https://github.com/dtjm/jquery/tree/ajaxonly

AMD用户请阅读本文 ,我的答案是build立一个单一的文件。

或者,你只是使用这个库:
ded / reqwest (4 KB,min&gzip)


您需要至less10个声望才能发布超过2个链接。
所以我反驳逃脱链接

  1. 下载[source code](https://github.com/jquery/jquery)并运行npn i

  2. 打开/src/jquery.js并删除不需要的模块,但保留"./exports/global"

     define([ "./ajax", "./ajax/xhr", "./ajax/script", "./ajax/jsonp", "./exports/amd", "./exports/global" ], function (jQuery) { "use strict"; return jQuery; }); 
  3. 运行grunt custom:-sizzle

  4. 转到/dist并采取你的构build


现在您的版本中的模块:

  • 核心
  • 延期的
  • 阿贾克斯

尺寸:

  • 只是build立
    85 KB
  • 与最小build立
    26 KB
  • 用min&gzipbuild立
    10 KB

这是全部或没有。 当然,jquery是开源的,你可以从自己的库中提取你感兴趣的部分(祝你好运)。 您可以考虑使用CDN,以确保大多数用户已经将其caching在浏览器中,因此您不必担心其大小。

如果你真的只想要jQuery的Ajax部分,你可以从他们的仓库获取代码( https://github.com/jquery/jquery ),看看它,你会想看看“ajax.js”和“core .js“在”src“目录中。 然后,你会想与闭包编译器一起编译它们。

但是正如其他人所说,从大多数用户将caching的CDN(jQuery,Google,Microsoft)之一加载它会容易得多。

是的,我只是做了我的, http://noypi-linux.blogspot.com/2013/05/build-jquery-with-ajax-only.html

你只需要这些文件(导致缩小约30Kb):

 /d/dev/javascript/jquery/jquery/src/intro.js /d/dev/javascript/jquery/jquery/src/core.js /d/dev/javascript/jquery/jquery/src/callbacks.js /d/dev/javascript/jquery/jquery/src/deferred.js /d/dev/javascript/jquery/jquery/src/support.js /d/dev/javascript/jquery/jquery/src/data.js /d/dev/javascript/jquery/jquery/src/event.js /d/dev/javascript/jquery/jquery/src/serialize.js /d/dev/javascript/jquery/jquery/src/ajax.js /d/dev/javascript/jquery/jquery/src/ajax/xhr.js /d/dev/javascript/jquery/jquery/src/exports.js /d/dev/javascript/jquery/jquery/src/outro.js 

没有任何开箱即可,但是您可以从现有文件中剪切并粘贴,然后将其最小化。

如果你只是担心从谷歌的CDN服务它的库的大小,MS或jQuery可能会需要较less的数据stream量,因为大多数浏览器已经caching文件。