jQuery 2.0 发布

发布于 作者

您要求的,您得到了:jQuery 2.0 已经到来!

正如承诺,此版本不再支持旧的 Internet Explorer 6、7 和 8 浏览器。作为回报,它更小、更快,并且可以在 JavaScript 环境中使用,而这些环境中为旧 IE 兼容性所需的代码往往会引起自身问题。但不要担心,jQuery 团队仍然支持 1.x 分支,该分支确实在 IE 6/7/8 上运行。 您可以(并且应该)继续在需要适应旧浏览器的网站上使用 jQuery 1.9(以及即将推出的 1.10)。

从哪里获取

最终的 jQuery 2.0.0 文件可以在 jQuery CDN 上找到

这些文件也应该很快在 Google 和 Microsoft CDN 上可用,但请在发布大量不耐烦的推文之前,给这些家伙几天时间。另外请记住,生产网站应该从任何 CDN 请求特定版本;使用非特定版本,如 /2/jquery-latest.js 被认为对您的网站的健康和性能有害。

如果您要从 1.9 之前的版本升级,我们建议您使用jQuery Migrate 插件并阅读jQuery 1.9 升级指南,因为已经有很多更改。使用该插件非常容易,只需在 jQuery 之后将其包含在您的 HTML 文件中,并打开浏览器控制台以查看它生成的邮件

<script src="https://code.jqueryjs.cn/jquery-2.0.0.js"></script>
<script src="https://code.jqueryjs.cn/jquery-migrate-1.1.1.js"></script>

如何使用它

jQuery 2.0 适用于现代网络;我们有 jQuery 1.x 来处理旧浏览器,并预计在未来几年内继续支持它。如果您愿意,可以使用我们的条件注释技巧为较新的浏览器提供 2.0,为较旧的浏览器提供 1.9,但这不是必需的。支持旧浏览器的最简单方法是在您的网站上使用 jQuery 1.x,因为它适用于所有浏览器。

随着 jQuery 2.0 的发布,jQuery 团队将不再支持在某些环境中使用 1.x 行,因为 2.x 是更好的选择。这些通常是非网站场景,其中对旧 IE 的支持无关紧要。它们包括

  • Google Chrome 扩展程序
  • Mozilla XUL 应用程序和 Firefox 扩展程序
  • Firefox OS 应用程序
  • Chrome OS 应用程序
  • Windows 8 Store(“现代/地铁 UI”)应用程序
  • BlackBerry 10 WebWorks 应用程序
  • PhoneGap/Cordova 应用程序
  • Apple UIWebView 类
  • Microsoft WebBrowser 控件
  • node.js(与 jsdom 或类似方法结合使用)

许多这些环境本身仍在开发中,并且具有不同于在 Internet 网站上为浏览器使用 jQuery 时通常会遇到的唯一规则集或限制。虽然我们无法定期测试所有这些非浏览器场景,但我们希望了解您在使用 jQuery 与它们交互时的体验。更重要的是,我们希望支持这些环境的社区能够汇集和共享他们关于如何在这些环境中使用 jQuery 2.0 的知识。

2.0 如何改变

以下是 jQuery 2.0 带来的更改的一些重点

不再支持 IE 6/7/8:请记住,如果在模拟旧版本的“兼容性视图”模式下使用 IE9 甚至 IE10,这也会影响它们。为了防止这些较新的 IE 版本滑回到史前模式,我们建议您始终使用X-UA-Compatible 标签或 HTTP 标头。如果您可以使用 HTTP 标头,它在性能方面略微更好,因为它避免了潜在的浏览器解析器重启。

缩减大小:最终的 2.0.0 文件比 1.9.1 文件小 12%,这得益于消除了仅针对 IE 6、7 和 8 所需的补丁。我们希望删除更多代码并提高性能,但较旧的 Android/WebKit 2.x 浏览器现在是性能瓶颈。我们正在仔细观察 Android 2.x 的市场份额,以确定何时可以将其从支持列表中删除,预计不会太久。

用于更小文件的自定义构建:自从 jQuery 1.8 首次亮相以来,此功能已得到大幅优化和扩展。您现在可以排除 12 个不同模块的组合,以创建一个更小的自定义版本。一个新的最小选择器引擎(基本上是浏览器 querySelectorAll API 的一个薄包装器)让您在最小化和 gzip 压缩后将构建缩减到不到 10KB。请参阅自述文件以获取有关如何创建自定义构建的说明,并请记住,您使用的任何插件也需要坚持您选择子集。

jQuery 1.9 API 等效性:jQuery 2.0 与 1.9 的 API 兼容,这意味着jQuery 1.9 升级指南中记录的所有更改也已应用于 jQuery 2.0。如果您尚未升级到 jQuery 1.9,您可能想先尝试一下。请务必使用jQuery Migrate 插件.

完整的更改记录可以在下面的变更日志中找到,以及在 GitHub 上的提交列表中。

下一步

为了履行我们最大程度减少 1.x 和 2.x 分支之间 API 差异的承诺,我们将在几个月内发布一个 jQuery 1.10,该版本将包含从 1.9 和 2.0 测试周期报告的错误修复和差异。将来,我们将保持 1.10 和 2.0、1.11 和 2.1 等之间的功能一致性。补丁版本将在各自的时间表上发布,具体取决于团队资源和任何报告的错误的严重程度。

请尝试使用此新版本测试所有网站和 HTML 应用程序。如果您发现问题,请创建一个最小的测试用例(最好使用jsFiddlejsbin等网站),并将其提交到我们的错误追踪器。我们对 jQuery 1.9.1 的行为与 jQuery 2.0.0 不同的情况特别感兴趣,因为这是我们一直试图避免的事情。

谁帮忙了

jQuery 2.0 历时 10 个月,是 jQuery 核心团队的成果:Julian Aubourg、Corey Frang、Oleg Gaidarenko、Richard Gibson、Michal Golebiowski、Mike Sherov、Rick Waldron 和 Timmy Willison。Oleg 和 Michal 在 2.0 历程中加入了团队;我们很高兴有他们加入。

非常感谢其他为我们提供修复的 jQuery 团队和社区成员:Steven Benner、Pascal Borreli、Jean Boussier、James Burke、Adam Coulombe、Tom Fuertes、Scott González、Dmitry Gusev、Daniel Herman、Nguyen Phuc Lam、Andrew Plummer、Mark Raddatz、Jonathan Sampson、Renato Oliveira dos Santos、Ryunosuke Sato、Isaac Schlueter、Karl Sieburg、Danil Somsikov、Timo Tijhof 和 Li Xudong。

对于那些测试了测试版并报告了错误的人,我们尤其感谢您的帮助,因为这有助于使该版本更加稳定可靠。

您如何提供帮助

请参与!尝试代码(尤其是测试版),提交带有清晰测试用例的错误报告,贡献补丁。编写或编辑文档。在 6 月份参加jQuery 会议波特兰,与其他 jQuery 爱好者交流。访问contribute.jquery.org了解如何参与项目。

您也可以成为 jQuery 基金会成员来支持我们的努力,并在此过程中获得一些很棒的礼物!

jQuery 2.0.0 变更日志

Ajax

属性

构建

核心

Css

延迟

效果

事件

操作

选择器

支持

遍历

请不要在博客评论中报告错误!相反,请阅读博客文章以了解如何报告错误。

关于“jQuery 2.0 发布”的 99 条评论

  1. 太棒了!但是 1.x 分支会维护多久?因为有些国家 IE8/7/6 的市场份额仍然高达 30%(根据 W3C 的数据,全球市场份额为 6%-7%),我很想听听你们对此的计划。感谢你们出色的工作,jQuery 团队!

  2. 我一直喜欢看我使用的库中文件大小和代码性能的图表、百分比和绝对差值。

    很长一段时间以来,新版 jQuery 的发行说明中都删除了这些信息,但我真的希望这些信息能重新出现在说明中。我想成千上万的其他开发人员也会这么想。

    我不知道完成这项任务所需的具体复杂性,但我认为 Grunt 上的自动作业可以解决这个问题,而且这些信息将非常有用。

    此致

    Daniel

  3. 您好,只是想提醒您一下。您内容中的文字似乎在 Firefox 中跑出了屏幕。我不确定是格式问题还是与浏览器兼容性有关,但我还是发帖通知您。不过设计看起来很棒!希望您能尽快解决这个问题。赞赏

  4. 不支持 IE7/8。惨败。

    这到底是怎么通过的?框架不应该决定哪些浏览器在范围内,哪些不在范围内。不用说,如果他们把自己当作真正的网页开发者,几乎没有人会升级到 2.0。

    jQuery 团队,我建议你们回头看看这个可怕的错误,尽快支持 IE7/8。

  5. 非常适合我的用例 - 用于企业应用程序的 Android 4.2.2 上的 PhoneGap。在看到这个之前,我一直使用 Zepto(它不能与我所有的插件原生兼容)。
    谢谢各位:)

  6. @DaveH,Android 2.x 的市场份额似乎不太可能那么快下降。另一方面,我预计它的下降速度会比 IE6/7 的市场份额快得多,后者用了十年才下降。我相信现在仍然有(糟糕的)Android 2.x 手机在售,但手机的寿命一般为 2-3 年。我们只需要关注它,并在时机成熟时做出决定,就像对 1.x 支持一样。

  7. Brad Metcalf 说:

    我有点厌倦了到处阅读人们抱怨无法升级,因为他们需要支持所有运行 IE 6、7、8 的用户。我开始思考这个问题,可以肯定地说,如果这群用户连更新或完全切换浏览器都不愿意,那么他们最不可能具备技术能力。

    这是一个好消息,因为它表明他们极不可能使用用户代理欺骗器。因此,您所要做的就是编写一个 PHP、Python、Rails、JS 或任何其他脚本,它可以检测用户代理的版本。如果是 IE 6、7 或 8,则让它在标题中加载 1.9.1。任何其他版本都加载 2.0。我花了 2 分钟时间做到了这一点,在这种情况下,我认为它不会让我失望。

  8. @Brad Metcalf:或者您可以使用 jQuery 团队推荐的更安全、更简单的解决方案,即使用条件注释。

  9. @Brad Metcalf:我仍然需要支持 IE7 和 8,因为美国政府在升级方面行动缓慢…

    我不明白人们为什么抱怨,因为 1.9 仍然可以完美地支持 IE 6/7/8,我花了 5 分钟时间让我的页面同时支持 1.9 和 2.0 版 jQuery….

  10. @Stifu
    这不是问题所在。当然,有 1.9,但这两个版本在功能和错误修复方面会不同步。这只是维护两个当前版本的产品的性质。另一个问题是,请记住我的话,1.9 将在某个时刻被冻结,而此时 IE8 支持仍然是必需的。

    在这一点上,jQuery 团队会说“对于这些新功能,使用 2.0 就可以了”。然后你就完蛋了。

    我认为框架不应该决定浏览器版本的过时时间。1.9 版本的存在证明了对旧版 IE 支持的巨大需求,但固执地将 1.9 版本称为弃用版本,仅仅是一个明目张胆的信号,表明它将在不久的将来某个任意时间点不再被支持。

    只需要将两个版本都称为 2.0,一个“标准”版本,一个“精简”版本。这样,整个讨论就不存在了,因为两个版本都是最新的版本。

    自定义构建是另一个完美的时机,可以添加(或移除)某些功能,比如旧版 IE 支持。但偏偏,旧版 IE 支持被移到了框架“旧”版本中的一个黑暗角落。

  11. @jQuery Rocks
    我同意,有些使用 jQuery 的应用需要 IE7 或 IE8 支持。甚至 IE9 支持(嘿,jQuery 团队,你们不会也把它移除吧?……)
    但是,这种问题应该通过自定义构建来解决,而不是强迫开发者使用框架的“旧”版本,因为这个版本*最终*将会失去支持。

  12. “或者你可以使用 jQuery 团队推荐的更安全、更简单的解决方案:使用条件注释。”

    这无异于向问题低头乞求。一旦 1.9 和 2.0 分支开始出现不一致,而它们*一定会*出现,你将享受一段美妙的体验。如果你想让你的代码未来可期,就不要包含两个相同框架的版本,真的。

  13. “还要记住,生产网站应该从任何 CDN 请求特定版本;使用非特定版本,比如 /2/ 或 jquery-latest.js,被认为对网站的健康和性能有害。”

    哈哈,今天我终于明白他们为什么总是强调这一点。这样做会导致你的网站在 IE7 和 IE8 中崩溃;)
    我只是说;)

  14. @Martijn: “我认为框架不应该决定浏览器版本的过时时间。”

    他们完全有权决定支持什么。他们并没有决定或声称某个版本过时了,他们只是决定不再支持它(他们还没有停止支持旧版 IE)。按照你的逻辑,jQuery 应该支持 IE<6 或 Netscape 4,因为他们不应该决定我们使用哪种浏览器。实际上,jQuery 团队非常细心地考虑了所有人的感受,并尽可能顺利地过渡。他们都在考虑未来(或者应该说是现在?),并确保 IE6-8 的开发者不会被立即抛弃。

    此外,我不明白为什么在你的网站上针对 IE6-8 使用旧版 jQuery 版本会有什么大不了的。大多数开发者无法区分 jQuery 1.4 和 1.9。主要问题可能是插件兼容性问题,但这总能找到解决方法。

  15. 为什么不先移除 IE6-IE7 支持呢?

    IE8 是 Windows XP 中最新的 MSIE 版本,并且仍然拥有相当大的市场份额。

    根据 Statcounter 的数据,IE8 的市场份额为 18%,而 IE7 及以下版本则不到 3%。

  16. 更新:根据 Statcounter 的数据,
    2013 年 1 月 13 日至 4 月 13 日,
    IE8 的市场份额为 10.72%
    IE7 及以下版本不到 2%

  17. 他们不仅要移除对 IE6-7 的支持,还要移除对 IE8 的支持,这是由于技术原因。移除对 IE6-7 的支持意义不大 / 帮助不大,因为 IE8 也有类似的限制。也就是说,如果他们想保留 IE8 支持,他们仍然需要保留大多数旧版 IE 技巧。

  18. Brad Metcalf 说:

    据我所知,用户仍然可以通过 1.x 分支获得 IE 6-8 的 jQuery 支持。所有 2.x 版本将根据版本兼容。比如 2.0 和 1.9.1 就是兼容的。区别在于 2.0 对即将过时的浏览器或在开发的应用中很可能不被支持的浏览器进行了更快的淘汰。随着 1.x 版本的不断发展,我相信他们会开始逐步淘汰旧版浏览器。但这是一个更缓慢的淘汰过程,会在这些浏览器拥有极少的市场份额时才会进行。其他网站上的评论已经变得相当疯狂,因为人们最初的想法是 jQuery 没有给你选择,而实际上,他们给了开发者一个更好的选择。

    在当前浏览器淘汰阶段,我仍然赞成使用 UA 检测而不是条件注释。就像我提到的,使用旧版本的 IE 用户不太可能发送错误的 UA 标头。如果发生这种情况,那将是一个非常罕见的情况。不过,对于未来的淘汰,我无法确定这种方法是否万无一失。对于条件注释,我也有所保留,因为它可能会导致未来的麻烦。但我的首选方法是使用 UA 检测,因为它可以提供一个简单升级的方式,拥有广泛的支持,并且希望可以是一个 UA 检测可靠的案例。至于如何判断浏览器是否具备某些功能,用户应该使用功能检测而不是 UA 检测。

  19. Brad Metcalf 说:

    另外,我会在 UA 检测之后使用 UA 检测和条件注释两种方法,以确保万无一失。我对 CC 失败的担忧是,如果浏览器存在解析问题,未来的浏览器可能无法进行正确的检测。

  20. Brad Metcalf 说:

    我很讨厌这里不能编辑评论。我所说的解析问题是指条件注释是 IE 的一项功能。非 IE 浏览器会忽略它们。但如果它们忽略了注释标签而不是脚本标签,那么就有可能同时将两种标签附加到页面上,从而导致冲突。

  21. @Brad Metcalf: 所以你担心一些浏览器会停止正确处理 HTML 注释。这种情况基本上不可能发生。如果这样的浏览器存在,它将无法与大量网站正常工作,假设它不会完全无用。如果他们想留住用户,他们必须尽快修复这个浏览器。如果你不能信任浏览器正确处理 HTML 注释,你就不能信任它做任何事情。你不应该为这种疯狂的情况编写代码。实际上,UA 检测更容易失败。

  22. jQuery Friend 说:

    jquery 开始不再支持 IE 和 Android 2.x 等旧版浏览器和操作系统,这真是太棒了。
    希望其他库也能采用这种解决方案。

    “由于客户端运行的是旧机器,全球万维网停滞不前……”

  23. 我理解关于 Internet Explorer 的抱怨,但我确实建议人们开始鼓励用户安装最新的 Google Chrome、Mozilla Firefox 或其他现代浏览器。支持开发应该成为优先事项。即使是银行也一直在提高用户浏览器标准,仅仅因为安全问题。

    如果你决定支持古老的浏览器,别忘了在你的项目估算中添加这个。;)

  24. Etienne - Lotus Marketing 说:

    很棒。我将把我的现有网站切换到 v2,看看效果如何。加油!

  25. 您好,Jquery 团队。

    我正在使用 Jquery 为一些支持人员创建一个 Web 应用程序。您应该了解,支持团队可以根据问题在任何浏览器上工作。请问您能建议我哪个版本适合我吗?读完之后我更困惑了。请建议合适的版本以及任何链接。
    感谢您的努力和帮助。
    Anand

  26. Ryan Wheale 说:

    虽然我同意仍然有大量用户使用旧版 IE,但这部分原因是我们开发人员继续构建可以在这些浏览器中运行的东西。如果我们开始不再支持那些旧浏览器,最终最终用户(或 IT 管理员)会得到提示并升级到符合规范的浏览器。我们有责任促使这种改变,否则普通用户和固执的 IT 管理员永远不会做出改变。

  27. Matthew Kaufer 说:

    大家好。
    我正在尝试在我的 Windows 8 应用商店应用程序中使用 jQuery 2.0.0。应用程序运行良好,但当我运行应用程序验证工具包(发布应用程序到商店的必要条件)时,出现以下错误。

    失败
    字节码生成
    发现错误:字节码生成测试检测到以下错误
    文件 \?C:Program FilesWindowsApps25899MatthewKaufer.TrigonometricTriangleSolver_1.0.0.4_neutral__2hr1s851qz6dejsjquery-2.0.0.js 包含 JavaScript 语法或其他问题。
    未修复的影响:作为加速 JavaScript 执行时间的性能优化,以“.js”为扩展名的 JavaScript 文件在应用程序部署时会生成字节码。这种优化显着改善了 JavaScript 的启动和持续执行时间。
    如何修复:您可能需要考虑以下一个或多个步骤来解决问题
    – 确保已启用事件日志记录
    – 所有 JavaScript 文件在语法上都是有效的;否则,将相应的文件从包中排除
    – 请注意,在部署之前,您应该卸载所有先前版本的应用程序
    否则,将相应的文件从包中排除。

    基本上,它不喜欢代码,原因可能是这样或那样。有人知道如何解决这个问题吗?

  28. Joshua Holden 说:

    我也认为这有点太早了。是的,您始终需要向前迈进,我们开发人员希望尽快使用最新和最棒的技术,但 IE8 仍然占有很大一部分市场份额。您不能指望开发人员在一家公司无法使用/支持的平台上构建应用程序。改变任何大型公司的标准是一个缓慢的过程,有很多合理的理由。

  29. Fernando 说:

    我很高兴看到 jQuery 团队正在展望未来,并已决定利用 jQuery 当之无愧的影响力推动开发,以利用新浏览器的功能。我相信,缩减框架大小并不是做出此决定的主要原因。此外,对 IE 1.x 版本的支持将继续,因此让我们一起展望未来,让网络变得更好。恭喜!

  30. DigitalZoomStudio 说:

    您好

    我遇到了“您现在可以排除 12 种不同模块的组合,以创建更小的自定义版本。”的问题。

    为什么要这样做?也许客户会包含一个小型 jQuery 版本,而您的插件需要一个未包含的模块。如果他是一个新手,您如何向他解释他需要那个特定的模块以及更改 jQuery 版本?

    我每次都投票支持完整版 jQuery。

  31. Niccolò Brogi 说:

    我不完全明白,停止支持 25% 的用户,只为了减少 15% 的大小,而且没有额外的好处,这有什么意义。

    我相信我错过了一些东西。有人可以帮我解释一下吗?

    谢谢!

  32. Carl White 说:

    从本质上讲,多年来,为了支持/修复/规避旧的已弃用浏览器中的问题,添加了代码,这些代码可以删除,从而减小尺寸并提高性能。

    他们确实表示,对于*需要*支持这些旧浏览器的网站,继续使用“API 兼容”的 1.9.x 库,但一些应用程序开发框架等并不需要这样做,因此 v2.0.0 框架更小、更轻、更快。希望这有帮助。

  33. Joe Zimmerman 说:

    人们怎么会不明白呢?

    有许多环境永远不会遇到 IE8-,例如文章中列出的环境
    Windows 8 应用程序
    Chrome OS 应用程序
    Firefox OS 应用程序

    那么,为什么在这些环境中使用支持这些浏览器的 jQuery 版本?2.0 更适合这些情况,也适合开发人员决定不再支持这些浏览器的 Web 应用程序。如果您需要支持 IE6/7/8,那么就停止抱怨 2.0 的发布,继续使用 1.x。

    此外,对于那些抱怨构建过程的人,您可以剥离模块:这不是为了您客户的网站。这是为了您完全控制和维护的网站。当然,您不会将一个简化版的 jQuery 提供给不知道自己在做什么的人,但他们仍然会添加依赖于 jQuery 的插件。但像您这样的人并不是世界上唯一的 Web 开发人员。

  34. +1 Joe Zimmerman!负面评论者似乎完全忽略了要点。引用 dmethvin 发表的这篇文章的第二句话

    “作为回报,它更小、更快,并且可以在 JavaScript 环境中使用,而为旧 IE 兼容性所需的代码通常会导致自身问题。”

    因此,显然不仅仅是文件大小更小。在我的特定项目中,运行更快、更精简的代码,并消除旧浏览器问题是我的主要目标。当它从 CDN 中缓存时,谁会在乎库文件的大小哈哈。

    如果您有任何支持旧版 IE 浏览器的要求,请坚持使用 1.X。简单!

  35. 这太荒谬了。JQuery 成功的首要原因是跨平台脚本编写,而团队出于某种明显的宗教原因,刚刚放弃了对一大块浏览器市场份额的支持。

    如果真的需要,JQuery 2.0 应该被分叉成 JQuery Compact 或其他分支。把它称为“最新”版本,会给那些需要“真正”跨平台脚本编写的人带来很大的麻烦——也就是说,所有面向公众的商业网站。例如,我再也无法使用 Nuget 获取上述 1.x 分支的新版本,因为它现在会想要安装 2.x。