jQuery中只有Ajax部分吗?问题是我不需要整个库,只需要它的Ajax部分(我需要将这部分包含在几个iframe中)。
答案 0 :(得分:29)
您可以使用此工具构建自己的自定义jQuery版本。
从jQuery 2.1.1开始
未文明的完整文件大小为: 241.55 Kb
Ajax只有缩小: 49.60 Kb
这是 5x 缩小。
答案 1 :(得分:12)
达林已经说过,这是全有或全无。 JQuery的Ajax函数与其余功能密切相关。
还有其他一些独立的Ajax库,如Matt Kruse's Ajax toolbox - 可能会有所帮助。
我会考虑加载完整的jQuery库。如果您链接到jQuery on a CDN,,加载时间将是微不足道的。
答案 2 :(得分:8)
从jQuery 1.8开始,你可以这样做:LINK
答案 3 :(得分:6)
另一种选择是使用浏览器提供的内置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 */
});
This blog post是对API的精彩介绍,并展示了更多用例。
fetch
还没有完整的跨浏览器支持(我认为主要是缺少IE和Safari),但是在那一天到来之前你可以使用polyfill。
fetch
polyfill:https://github.com/github/fetch
较旧的浏览器还需要Promise
polyfill(one option,another option)。
答案 4 :(得分:4)
例如,$.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();
答案 5 :(得分:3)
我在这里创建了一个jQuery 1.7.1的自定义版本:
答案 6 :(得分:2)
AMD用户请阅读this,我的答案是建立单个文件 或者只使用此库:ded / reqwest(4 KB,min&amp; gzip)
下载source code并运行npn i
打开/src/jquery.js
并移除您不想要的任何模板,但保留"./exports/amd"
,"./exports/global"
define([
"./ajax",
"./ajax/xhr",
"./ajax/script",
"./ajax/jsonp",
"./exports/amd",
"./exports/global"
], function (jQuery) {
"use strict";
return jQuery;
});
运行grunt custom:-sizzle
转到/dist
并参加您的构建
现在构建中的模块:
尺寸:
答案 7 :(得分:1)
如果你真的只想要jQuery的Ajax部分,你可以从他们的存储库(https://github.com/jquery/jquery)获取代码,看看它你会想看看“ajax.js”和“core.js”在“src”目录中。然后,您需要将它们与闭包编译器或其他东西一起编译。
但正如其他人所说的那样,从大多数用户将缓存的CDN(jQuery,谷歌,微软)加载它会容易得多。
答案 8 :(得分:1)
你只需要这些文件(缩小约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
答案 9 :(得分:1)
您可以尝试 AJAJ 。这是一个很小的库(少于1kb gzip压缩),可以进行ajax调用。而且其语法与jQuery非常相似。
例如:
ajaj({
method: "POST",
url: "/path/to/request",
data: {
name: "AJAJ",
version: "1.0.0",
},
success: function (data) {
console.log(data);
},
fail: function (error) {
console.log(error);
},
});
答案 10 :(得分:0)
全有或全无。当然jquery是开源的,你可以在你自己的库中提取你感兴趣的部分(祝你好运)。您可以考虑使用CDN,以确保大多数用户已将其缓存在浏览器中,因此您不必担心尺寸。
答案 11 :(得分:0)
没有开箱即用,但您可以从现有文件中剪切和粘贴,然后将其最小化。
如果您只是担心从谷歌的CDN服务它的库的大小,MS或jQuery可能需要较少的数据流量,因为大多数浏览器已经缓存了文件。