是否只有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版本:
AMD用户请阅读本文 ,我的答案是build立一个单一的文件。
或者,你只是使用这个库:
ded / reqwest (4 KB,min&gzip)
您需要至less10个声望才能发布超过2个链接。
所以我反驳逃脱链接
-
下载
[source code](https://github.com/jquery/jquery)
并运行npn i
-
打开
/src/jquery.js
并删除不需要的模块,但保留"./exports/global"
define([ "./ajax", "./ajax/xhr", "./ajax/script", "./ajax/jsonp", "./exports/amd", "./exports/global" ], function (jQuery) { "use strict"; return jQuery; });
-
运行
grunt custom:-sizzle
-
转到
/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文件。