是否只有jQuery的Ajax部分?

时间:2010-11-09 09:31:29

标签: javascript jquery

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

12 个答案:

答案 0 :(得分:29)

2016年更新

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

jQuery Builder

从jQuery 2.1.1开始

未文明的完整文件大小为: 241.55 Kb

Ajax只有缩小: 49.60 Kb

这是 5x 缩小。

enter image description here

答案 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 optionanother option)。

答案 4 :(得分:4)

您可以在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();

答案 5 :(得分:3)

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

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

答案 6 :(得分:2)

AMD用户请阅读this,我的答案是建立单个文件 或者只使用此库:ded / reqwest(4 KB,min&amp; gzip)

  1. 下载source code并运行npn i

  2. 打开/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;
    });
    
  3. 运行grunt custom:-sizzle

  4. 转到/dist并参加您的构建

  5. 现在构建中的模块:

    • 推迟
    • AJAX

    尺寸:

    • 刚建:85 KB
    • 使用min构建:26 KB
    • 用min&amp; gzip:10 KB

答案 7 :(得分:1)

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

但正如其他人所说的那样,从大多数用户将缓存的CDN(jQuery,谷歌,微软)加载它会容易得多。

答案 8 :(得分:1)

是的,我刚做了我的, 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

答案 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可能需要较少的数据流量,因为大多数浏览器已经缓存了文件。