jQuery 1.1.3:速度提升 800% 以上,仍保持 20KB

发布日期: 作者:

我很高兴地宣布 jQuery 1.1.3 发布。经过数月的测试、开发和更多测试,我们已经准备好了一个非常稳定的版本供下载。它包含大约 80 个已修复的错误 和一些增强的功能。亮点包括

  1. 速度提升,DOM 遍历速度比 1.1.2 版本快了 800% 以上。
  2. 重新编写的事件系统,更优雅地处理键盘事件。
  3. 重新编写的特效系统(以及配套的 fx 测试套件),具有更快的执行速度和更好的跨平台支持。

更新 - 7 月 4 日我们刚刚完成了一个快速 bug 修复版本,版本号为 1.1.3.1,修复了 一些突出的问题

下载

像往常一样,如果您发现此版本有任何错误,请将其发布到 jQuery 错误追踪器

1.1.3 功能

巨大的选择器速度提升

应广大用户的需求,我们深入挖掘并对 jQuery 的选择器引擎进行了重大改进。以下是对 jQuery 本身速度提升的细分。所有数字都基于 SlickSpeed 测试套件。

浏览器 jQuery 1.1.2 jQuery 1.1.3 % 提升
IE 6 4890ms 661ms 740%
Firefox 2 5629ms 567ms 993%
Safari 2 3575ms 475ms 753%
Opera 9.1 3196ms 326ms 980%
平均提升 867%

此外,我们使用 SlickSpeed 测试套件,对改进后的代码库进行了一些其他流行的选择器库的测试。

浏览器 Prototype jQuery Mootools Ext Dojo
IE 6 1476ms 661ms 1238ms 672ms 738ms
Firefox 2 219ms 567ms 220ms 951ms 440ms
Safari 2 1568ms 475ms 909ms 417ms 527ms
Opera 9.1 220ms 326ms 217ms 296ms 220ms

查看 速度套件 的结果时需要注意两点

  • 我们的速度比 jQuery 1.1.2 快了 800% 以上。
  • 我们在最流行的浏览器 Internet Explorer 6 中是最快的框架。
  • 我们是唯一一个不会给出错误结果的框架。
  • 所有这些都不会对您造成任何损失 - jQuery 仍然是您所熟悉的、大小为 20KB 的库。

新的选择器

Unicode 选择器:这对那些想要使用 Unicode 属性值、ID、类名或标签名的用户来说是一个巨大的补充。您现在可以在 jQuery 选择器中直接使用它们

$("div.台北")
$("div#台北")
$("foo_bar台北")
$("div[@id=台北]")

转义选择器:一个经常被请求的功能,您现在可以通过 ID(或其他选择器)来选择使用特殊字符的元素,例如,这将找到 ID 为“foo.bar”的 div

$("div#foo\\\\.bar")

不等式选择器:虽然这个选择器不是 CSS 规范的一部分,但它经常被使用并包含在其他选择器库中,因此我们决定将其添加进来

$("div[@id!=test]")

:nth-child() 改进:此选择器允许您定位特定的子元素。从 jQuery 的开始我们就支持 :nth-child(1) 和 :nth-child(odd) 这样的选择器,现在我们添加了高级的 :nth-child 选择器,例如

$("div:nth-child(2n)")
$("div:nth-child(2n+1)")
$("div:nth-child(n)")

空格分隔的属性:在 jQuery 1.0 中被移除后,这个选择器现在应广大用户的需求被带回来了。它允许您定位空格分隔的属性(例如类或 rel 属性)中的单个项目。

$("a[@rel~=test]")

动画改进

速度:动画现在明显更快、更流畅。此外,您可以运行更多同时动画而不会影响速度。

测试:我们现在有一个专门的动画测试套件 - 这使我们能够修复一些以前无法定位的动画错误。

DOM 事件监听器

在内部,jQuery 事件系统已经过重新设计,以使用 DOM 事件系统,而不是经典的“onclick”样式的绑定事件处理程序。这项改进使您在使用库时更不显眼(不会影响周围其他库的流程)。此外,它还有助于解决一些与将事件监听器绑定到 IFRAME 相关的问题。

事件规范化

已经采取了一些措施来规范键盘和鼠标事件。您现在可以访问 event.which 属性来获取有关所按特定键或按钮的大部分详细信息。

多个 .is()

.is() 方法现在可以接受多个选择器,用逗号分隔。这使您可以测试 jQuery 集合是否匹配多个选择器。

$("div").is(":visible, :first")

浏览器版本

插件作者经常请求的一个功能是确定他们的用户使用的是哪个浏览器版本。我们现在通过一个额外的属性来公开此信息。

jQuery.browser.version

更多错误修复

请查看 票证列表,以获取此版本中解决的所有问题的完整列表。

jQuery 的未来

我们一直非常关注推动 jQuery 项目发展的方向和进展。我们现在正在关注几个不同的方面,但主要的关注点仍然是核心 jQuery 库的改进。我们已经规划了接下来的两个版本,您可以在下面阅读更多相关信息

jQuery 1.1.4

这将是 jQuery 1.1 分支的最后一个版本 - 另一个 bug 修复版本,包含一些小的改进。此版本还将根据即将发布的 jQuery 1.2 版本,将一些方法标记为已弃用。

我们目前计划在 7 月底发布此版本。

jQuery 1.2

这将是 jQuery 的下一个主要版本,包含大量新功能。此版本的完整详细信息可以在 jQuery 1.2 路线图 中找到。

我们非常感谢您对本版本的评论和反馈。它仍在规划中,因此还没有完全确定。我们目前计划在 8 月底发布 jQuery 1.2。

jQuery 图书

我们现在有 **4** 本关于 jQuery 的书籍正在编写,同样重要的是,它们都是由 jQuery 团队的成员编写(这样您就知道您获得的是可靠的信息)。

这些书籍及其作者如下

  • Learning jQuery 由 Karl Swedberg 和 Jonathan Chaffer 编写 - 预计 2007 年 7 月初出版(Packt 出版社)。
  • jQuery Reference Guide 由 Karl Swedberg 和 Jonathan Chaffer 编写 - 预计 2007 年夏季出版(Packt 出版社)。
  • jQuery Quickly 由 Yehuda Katz 和 Bear Bibeault 编写(Manning 出版社)。
  • Designing with jQuery 由 Glen Lipka 编写(Manning 出版社)。

这是非常棒的消息。我已经阅读了一些预发版章节,我认为您将从这些书籍中获得真正的享受。

jQuery 演讲和会议

我想宣布一些将在未来几个月内进行的关于 jQuery 的演讲。具体来说,将在两个 Ajax Experience 会议上进行一些关于 jQuery 的演讲。

在旧金山 Ajax Experience 上,John Resig 将对 jQuery 进行一个入门概述,然后进行一个高级 jQuery 演讲。Glen Lipka 将发表一个关于使用 jQuery 进行设计的演讲。

在波士顿 Ajax Experience 上,John 和 Glen 将再次进行演讲,并将与 Paul Bakaus 合作,发表一个关于使用 jQuery 开发高强度应用程序和游戏的演讲。

由于 jQuery 团队的许多成员都将参加波士顿 Ajax Experience,我们想宣布我们计划在 Ajax Experience 结束后第二天举行一个小型的、为期一天的 **jQuery 会议**。这是您与 jQuery 团队见面并提出任何困扰您问题的绝佳机会。我们还将进行一些关于 jQuery 特定方面的演讲。我们很快将提供更多详细信息。

jQuery UI

今天,我们还很高兴地宣布我们一直在秘密进行的一个项目:jQuery UI。这个项目由 Paul Bakaus 编写,是一个全新的拖放库,从头开始开发,并考虑了速度和可扩展性。此外,代码被精心编写,并且进行了充分的文档记录和测试 - 允许许多其他开发人员使用和扩展它。

此库将包含可拖动、可放置、可排序、可调整大小以及滑块的完整代码。

您可以在 SVN 仓库 中查看 Paul 的一些早期工作。

资金和感谢

新的 jQuery UI 库标志着 jQuery 项目迈出了新的一步:这是一个我们使用您(jQuery 用户)捐赠的资金来资助开发的代码部分!

这可以通过两种方式实现:第一是您对 jQuery 项目的持续支持和 捐赠,第二是 Media Temple 的慷慨的服务器捐赠。这使我们能够将财政资源集中在对每个人都最有益的其他项目上。

因此,我想借此机会请求额外的捐赠,以帮助我们继续为激动人心的新工作提供资金,您可以在您的网站上使用这些新工作。任何帮助都将不胜感激。

金额(美元)

再次感谢 jQuery 团队和所有帮助使这个版本成为可能的人。这是一项艰苦的工作,但我希望您会像我们一样对这个版本感到满意。谢谢 - 并感谢您使用 jQuery!

关于“jQuery 1.1.3:速度提升 800% 以上,仍保持 20KB”的 37 条评论

  1. 谢谢你们,很棒的工作!

    我迫不及待地想要使用 jQuery 1.2,你们发布的路线图看起来很有前途。
    我真的很期待 jQuery UI,我认为它将会比 Interface 更出色,Interface 在某些环境下会非常容易出现 bug。现在我更喜欢 'script.aculo.us' :)

  2. 很棒的工作!
    我目前正在学习使用 jQuery。它太棒了,我再也不想写那些丑陋的 JavaScript 代码了。jQuery 太棒了。
    而且你们的文档也很容易学习。我已经用伟大的 jQuery 创建了一些有用的脚本。
    现在,1.1.3 版本来了,它更棒了。简直令人难以置信!
    最后,来自中国的一句大大的感谢!

  3. Jonah Stagner 说:

    哦,太棒了!这个版本修复了一些非常受欢迎的 bug,并且还提高了速度!一旦我把它集成到我的主要开发项目中并确保一切正常,我就会再捐款给你们 :) 谢谢你们!

  4. Noah Lazar 说:

    看起来在这个版本中出现了一个回归问题。IE6 和 IE7 不再对透明度进行动画处理,这会影响 fadeIn()、fadeOut() 和 animate() 函数。其他支持的浏览器似乎没有问题。可以通过以下简化示例看到:
    http://noahlazar.com/jquery/fade.html

    我认为我应该在开发服务器被挖掘之前在博客上提及此事 - 我会在开发服务器恢复后立即提交一个新的票据。

  5. Karl Swedberg 说:

    Noah,非常感谢你提醒我们关于透明度问题的提示。Brandon Aaron 已经将一个补丁提交到了 jQuery svn,所以如果你能获取最新的 svn 构建版本,应该可以解决你的问题。

  6. Pingback: commadot.com » jQuery 1.1.3 及其未来

  7. 最受欢迎并不等于使用率最高。 :)

    我期待着我们能够完全停止对 IE 5 和 6 的支持的那一天。希望 Safari 能够尽快在 Windows 上提升速度。

  8. Matei "Ambient.Impact" Stanca 说:

    回复 ReyBango
    https://blog.jqueryjs.cn/2007/07/01/jquery-113-800-faster-still-20kb/#comment-32818

    W3Schools 的统计数据与整个互联网的实际情况并不一致。他们的数据是根据他们服务器上的流量统计的,而这些服务器主要被网页开发人员访问,而不是普通用户。我在“现实世界”中听到的关于浏览器份额的统计数据表明,Firefox(尽管它很棒,我非常喜欢它)只占了 15% 左右。IE(主要指 IE 6,而不是 IE 7)仍然占据了 70-80% 的市场份额。这就是现实情况,而不是你从 W3Schools 获得的统计数据,W3Schools 只能代表一小部分网民。

    所以,最重要的是,你所依赖的不是真实的统计数据,而且它非常不准确。

  9. Rey Bango 说:

    @Matei: 你为什么语气这么咄咄逼人?我说过什么让你生气或不高兴的话吗?

    无论如何,回到主题,我们一直在检查来自我们自己的客户的统计数据并比较笔记。我们还使用第三方统计数据(例如:w3schools),因为它们提供了不同的视角。我想列出至少一个我们用来衡量浏览器流行度的公共资源,我选择的是 w3schools。这完全没有问题。

    我们在所有主流浏览器上测试了 jQuery 并相应地确保了增强的性能,我们努力在所有浏览器之间平衡这种性能。我们 IE 的性能非常出色,因为我们确实意识到它们拥有最大的用户群。所以,我认为你在这件事上有点操之过急了。jQuery 团队都是专业人士,有些人为一些非常大的公司工作,他们对浏览器的市场份额非常敏感。

  10. 好的,我明白了 1.1.3 的问题——我覆盖了用户代理字符串,然后框架似乎不再工作了。

  11. Webstandard-Team on 说:

    John 干得好,它非常快。我做了一些 jQuery 1.1.3 测试,使用 IE、Firefox、Opera、Netascape、Safari、Flock & Co. 在 Windows XP 和 Vista、Mac OS X 上。这些比较证实了您的结果。

  12. Matei "Ambient.Impact" Stanca on 说:

    @Rey Bango (https://jqueryjs.cn/blog/2007/07/01/jquery-113-800-faster-still-20kb/#comment-32932)

    我并没有打算在打字时显得咄咄逼人。如果我冒犯了你,我道歉。我只是担心浏览器统计数据这个话题,因为你只提到了 W3Schools,没有其他来源。我遇到过一些人将它作为他们的主要来源,当这种情况发生时,有点令人担忧。再次,我为之前帖子中明显的语气道歉。

  13. @Matei:感谢您的回复。我完全理解您的担忧,对于我和团队来说,听到您的反馈和意见非常重要。我们还想向大家保证,我们在确定库的关键目标区域(例如:浏览器渗透率)时,会尽力查看多个来源。我们知道,归根结底,你们需要能够有效地工作,我们努力确保当你们使用 jQuery 时,该库不会成为你们的绊脚石。

    再次感谢您的反馈,当然没有冒犯的意思。现在,如果你叫我“胖乎乎的猴子”,那么可能会有麻烦!!;)

  14. resetstudio on 说:

    嗨!速度提升很大,但我遇到了“unbind”方法的一些问题……如果我不指定要取消绑定的事件 ($(eleme).unbind();) ,它运行良好,但如果我指定了它 ($(elem).unbind("hover");),它将无法工作(在 1.1.2 中完美运行)……有人遇到同样的问题吗?

  15. 你不认为 SlickSpeed 应该给出公平的结果吗?
    我的意思是……SlickSpeed 上显示的结果适用于消耗时间的总和,而忽略了至少有一个框架失败的测试!
    应该有另一行结果显示“所有有效结果”,或者类似的内容,只在所有框架都成功时才添加时间!
    当然,另一行将很有用——失败的测试数量!

  16. 嗨,
    Jquery 1.1.3.1 在 addClass 和 removeClass 中速度太慢。它在之前的版本中很好。在我的场景中,我有一个包含 500 行的表格,要向其添加 CSS 类,例如:$(#tableNAme tr).filter("some rows on selector").addClass("Shown").removeClass("unShown");
    使用 1.1.3.1 需要花费很长时间,而之前的 jQuery 库 jquery 1.1.2 则没有这种情况。

    我无法弄清楚问题出在哪里。我认为 jquery 1.1.3.1 应该向后兼容,但事实并非如此,因为我之前版本中运行良好的框架大部分都崩溃了。我希望 jquery 1.1.4 能够解决我在当前版本中遇到的问题。

  17. Pingback: zachleat.com {web} » JavaScript Frameworks and JSF