有一些方法来包括jQuery和jQuery UI,我想知道人们使用什么?

谷歌JSAPI jQuery的网站 您自己的站点/服务器 另一个CDN

我最近一直在使用谷歌JSAPI,但发现它需要很长时间来设置SSL连接,甚至只是解析google.com。我一直在使用以下谷歌:

<script src="https://www.google.com/jsapi"></script>
<script>
google.load('jquery', '1.3.1');
</script>

我喜欢使用谷歌的想法,以便在访问其他网站时缓存它,并从我们的服务器节省带宽,但如果它一直是网站的缓慢部分,我可能会改变包括。

你用什么?你有什么问题吗?

编辑:刚刚访问了jQuery的网站,他们使用以下方法:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>

Edit2:下面是我如何在过去的一年里没有任何问题地包含jQuery的:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>

区别在于去掉了http:。通过删除这个,您就不需要担心在http和https之间切换了。


当前回答

jQuery 1.3.1 min的大小只有18k。我不认为这是一个太大的打击,要求在初始页面加载。它会在那之后被缓存。因此,我自己主持。

其他回答

我不得不为谷歌上托管的库投票-1。他们收集数据,谷歌分析风格,与他们的包装这些库。至少,我不希望客户端浏览器做比我要求它做的更多的事情,更不用说页面上的其他事情了。更糟糕的是,这是谷歌不作恶的“新版本”——使用不引人注目的javascript来收集更多的使用数据。

注意:如果他们改变了这种做法,那就太好了。但上次我考虑使用他们的托管库时,我监控了站点上的出站http流量,我没想到会周期性地调用谷歌服务器。

除了有人建议把它放在自己的服务器上,我还建议把它放在单独的域(例如static.website.com)上,这样浏览器就可以把它加载到与其他内容线程分开的地方。这个技巧也适用于所有静态的东西,比如图像和css。

这里有一些有用的资源,希望可以帮助你选择你的CDN。 微软最近为通过他们的CDN交付图书馆添加了一个新的域名。

旧格式:http://ajax.microsoft.com/ajax/jQuery/jquery-1.5.1.js 新格式:http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.5.1.js

这不会为microsoft.com发送所有cookie。 http://www.asp.net/ajaxlibrary/cdn.ashx#Using_jQuery_from_the_CDN_11

这里有一些关于所有技术中最流行的网络技术的统计数据。 http://trends.builtwith.com/

希望可以帮助您选择。

这里有几个问题。首先,你指定的异步加载方法:

<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
  google.load('jquery', '1.3.1');
  google.setOnLoadCallback(function() {
    // do stuff
  });
</script>

有几个问题。脚本标记在检索时暂停页面加载(如果需要)。如果加载很慢,这很糟糕,但jQuery很小。上述方法的真正问题是,因为jquery.js加载独立于许多页面,它们将在jquery加载之前完成加载和渲染,所以你所做的任何jquery样式对用户来说都是可见的更改。

另一种方法是:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js"></script>

尝试一些简单的例子,比如,有一个简单的表格,用setOnLoadCallback()方法和$(document).ready()将单元格的背景更改为黄色,使用静态jquery.min.js加载。第二种方法不会有明显的闪烁。第一个遗嘱。我个人认为这不是一个好的用户体验。

作为一个例子运行:

<html>
<head>
  <title>Layout</title>
  <style type="text/css">
    .odd { background-color: yellow; }
  </style>
</head>
<body>
<table>
  <tr><th>One</th><th>Two</th></tr>
  <tr><td>Three</td><td>Four</td></tr>
  <tr><td>Five</td><td>Six</td></tr>
  <tr><td>Seven</td><td>Nine</td></tr>
  <tr><td>Nine</td><td>Ten</td></tr>
</table> 
<script src="http://www.google.com/jsapi"></script>
<script>
  google.load("jquery", "1.3.1");
  google.setOnLoadCallback(function() {
    $(function() {
      $("tr:odd").addClass("odd");
    });
  });
</script>
</body>
</html>

您应该看到表格出现,然后行变成黄色。

load()方法的第二个问题是它只托管有限范围的文件。这对于jquery来说是一个问题,因为它非常依赖插件。如果你试图包含一个jquery插件与<script src="…">标签和google.load()插件可能会失败的消息"jQuery is not defined",因为它还没有加载。我真不知道还有什么办法。

第三个问题(任何一种方法)是它们是一个外部负载。假设你有一些插件和你自己的Javascript代码,你至少有两个外部请求来加载你的Javascript。你最好获取jquery、所有相关插件和你自己的代码,然后把它们放到一个小文件中。

你应该使用谷歌的Ajax库API来托管吗?:

As to load times, you're actually loading two scripts - the jsapi script and the mootools script (the compressed version from above). So that is two connections, rather than one. In my experience, I found that the load time was actually 2-3 times slower than loading from my own personal shared server, even though it was coming from Google, and my version of the compressed file was a couple of K larger than Google's. This, even after the file had loaded and (presumably) cached. So for me, since the bandwidth doesn't matter much, isn't going to matter.

最后还有一个潜在的问题,即偏执的浏览器将请求标记为某种XSS尝试。这通常不是默认设置的问题,但在公司网络上,用户可能无法控制他们使用的浏览器,更不用说安全设置了,你可能会有问题。

所以在最后,我真的不能看到我使用谷歌AJAX API为jQuery至少(更“完整”的API是一个不同的故事在某些方面)除了在这里张贴例子。

如果您想使用谷歌,直接链接可能响应更快。每个库都列出了直接文件的路径。这是jQuery路径

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js"></script>

重读一下你的问题,你使用https有什么原因吗?这是谷歌在示例中列出的脚本标记

<script src="http://www.google.com/jsapi"></script>