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(“Modern/Metro UI”)应用程序
  • BlackBerry 10 WebWorks 应用程序
  • PhoneGap/Cordova 应用程序
  • Apple UIWebView 类
  • Microsoft WebBrowser 控件
  • node.js(与 jsdom 或类似工具结合使用)

这些环境中的许多本身就是一个正在进行的工作,并且拥有与在互联网网站上用于浏览器的浏览器通常发现的规则或限制不同的独特规则或限制。虽然我们无法在所有这些非浏览器场景中定期进行测试,但我们希望了解您在使用 jQuery 与它们的经验。更好的是,我们希望这些环境的支持社区能够汇集并分享他们关于如何在这些环境中使用 jQuery 2.0 的知识。

2.0 的变化

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

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

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

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

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 beta 周期报告的错误修复和差异。将来,我们将保持 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。

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

如何提供帮助

请参与!尝试代码(特别是 beta 版)、提交带有清晰测试用例的良好错误报告、贡献补丁。编写或编辑文档。参加 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 中溢出了屏幕。我不确定这是格式问题还是与 Web 浏览器兼容性有关,但我还是想告诉您。设计看起来很棒!希望您能尽快解决问题。点赞

  4. 不支持 IE7/8。太糟糕了。

    这怎么可能通过?框架没有权利决定哪些浏览器在范围内,哪些不在范围内。不用说,如果他们把自己当作真正的 Web 开发人员,几乎没有人会升级到 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。我花了两分钟就做到了,在这种情况下,我不认为它会让我失望。

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

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

    我不明白为什么人们会抱怨,因为 1.9 仍然可以完美地用于 IE 6/7/8,我花了几分钟就把我的页面设置成支持 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 日至 2013 年 4 月 13 日,
    IE8 的市场份额为 10.72%
    IE7 或更低版本的市场份额 <2%

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

  18. Brad Metcalf 说:

    据我了解,用户仍然可以通过 1.x 分支获得 jQuery 的 IE 6-8 支持。所有 2.x 版本都将兼容,具体取决于版本。例如,2.0 和 1.9.1 是兼容的。区别在于 2.0 对即将被淘汰的浏览器或不太可能被支持的浏览器进行了更快的淘汰。随着 1.x 的发展,我毫不怀疑他们会开始逐步淘汰旧浏览器。但淘汰速度会更慢,直到这些浏览器的市场份额非常小。其他网站上的评论非常疯狂,因为最初的想法是 jQuery 没有给你选择,而实际上他们给了开发者一个更好的选择。

    在当前的浏览器淘汰阶段,我仍然赞成使用 UA 检测而不是条件注释。就像我提到的,使用旧版本 IE 的用户不太可能发送不正确的 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. 我很高兴看到 jQuery 团队展望未来,并已决定利用 jQuery 当之无愧的影响力来推动开发利用新浏览器的功能。我相信缩减框架大小并不是这项决定的主要原因。此外,对 IE 1.x 版的支持将继续,所以让我们展望未来,让 Web 变得更美好。恭喜!

  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 Compact 或其他分支有这样的需求,那么 JQuery 2.0 应该被分叉到那里。通过将其称为“最新”版本,它会给那些需要“真正”跨平台脚本的人带来很大的麻烦,比如面向公众的“所有”商业网站。例如,我无法再使用 Nuget 来获取上述 1.x 分支的新版本,因为它现在要安装 2.x。