2010-11-09 61 views
42

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

+0

任何问题,如果你选择包括整个LIB?它并不那么沉重。 – Kangkan 2010-11-09 09:34:14

+1

即使您在多个iFrame中使用它,它也只会被下载一次。浏览器通常很聪明。使用缩小版本。它只有26kb。 – jwueller 2010-11-09 09:35:11

+0

iframes来自不同的子域(如sss.exemp.net和ggg.exemp.net) – fgfgfgghjh 2010-11-09 09:35:33

回答

0

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

+0

为什么好运?它出什么问题了? – fgfgfgghjh 2010-11-09 09:45:15

+1

没有错,它只是一个具有挑战性的任务,当新版本的jquery出来时,如果你想使用这个新版本,你可能需要从头开始。 – 2010-11-09 09:45:53

+0

@fgf只有当你真的,真的有一些额外的时间在你手上,真的不知道该如何处理它(比如,一个月或两个时间),那么从jQuery中删除部分值得考虑。 – 2010-11-09 10:12:51

0

有没有开箱即用,但你当然可以从现有的文件剪切和粘贴,然后将其最小化。

如果您只是担心Google的CDN提供的库的大小,MS或jQuery可能需要更少的数据流量,因为大多数浏览器已经缓存了文件。

12

正如Darin所说,这是全部或没有。 JQuery的Ajax函数与其余的功能密切相关。

还有其他一些独立的Ajax库像Matt Kruse's Ajax toolbox - 也许有帮助。

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

+0

我个人喜欢amplify.js – 2015-01-09 14:51:40

+0

@johnSmith Amplify.js依靠jQuery来执行Ajax请求,这与OP想要的相反。 – 2017-08-19 20:17:59

1

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

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

3

我创建的jQuery的自定义生成1.7.1这里:

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

+2

[我建立了它](https://github.com/thorsummoner/jquery-ajax)为那些不能这样做的人,它来自jQ-1.7.1,整个[41Kb缩小](https:/ /raw.githubusercontent.com/thorsummoner/jquery-ajax/jquery-ajax/jquery.min.js)没有保证! – ThorSummoner 2014-04-17 04:20:17

8

在jQuery 1.8,你可以做到这一点:LINK

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 
+0

感谢您参考这篇文章。我把一个项目放在基于此的github上。它做一些全球性的重命名,以避免冲突https://github.com/dbennett455/jqAjax – 2014-02-10 14:39:26

+0

30kb是一个只是ajax() – developerbmw 2016-05-28 07:44:45

+0

这是jquery ajax。 – 2016-05-30 05:38:17

22

更新2016

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

jQuery Builder

在jQuery 2.1.1

全部文件大小unminified是:241.55 KB

阿贾克斯只有精缩为:49.60 KB

这是一个减小尺寸5x

enter image description here

+0

这种形式是怎么回事?如果我选择'none',我会得到'Filesize:187.84 Kb/Gzip:55.69 Kb'这应该是0,如果我只选择ajax,那么我会得到更多的'Filesize:222。03 Kb/Gzip:66.51 Kb'有** NO **选项,可生成'49.60 Kb' – samayo 2016-05-08 12:49:08

+0

@samayo我编辑了我的文章,以便您检查答案。 – Neoaptt 2016-05-09 17:19:11

4

您可以在youmightnotneedjquery.com

例如另一种观点标准JavaScript替代jQuery来$.ajaxpost是:

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); 

而且替代$.ajaxget是:

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(); 
4

另一种选择是使用浏览器提供的内置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填充工具:https://github.com/github/fetch

旧的浏览器还需要一个Promise填充工具(one optionanother option)。

+0

我不会推荐在生产中使用提取。我只在safari上遇到了一些奇怪的问题(在ma​​cOS Sierra和iOS 10上)。也许这只是我愚蠢,但我认为这不值得调试时间。 – yuji 2016-10-26 09:10:51

+0

我在帖子中提到了这一点,并建议现在使用polyfill。谢谢你突出问题。 – 2016-10-27 20:19:30

2

AMD用户请阅读this,我的答案是建立一个文件。
或者只是使用这个库:ded/reqwest(4 KB,分&的gzip)


  1. 下载source code和运行npn i

  2. 打开/src/jquery.js,并移除任何moudle你不想要的,但保持"./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,现在把你的构建

模块在构建:

  • 核心
  • 推迟
  • AJAX

尺寸:

  • 只是建立:85 KB
  • 构建与分:26 KB
  • 构建与分&的gzip:10 KB
+0

构建:https://gist.github.com/zcyzcy88/393ca7dc76d22f3e5a4592f59f675ad1 – zcyzcy88 2017-05-04 12:10:02