jQuery 2.0 Beta 2 发布

发布日期 作者

jQuery 2.0 的下一个 beta 版已发布!此 beta 版包含一些根据我们从慷慨测试第一个 beta 版的用户那里收到的反馈而进行的更改和调整。我们确实需要您也测试此版本,并告知我们还有哪些需要完成的工作。我们相信此版本非常稳定,可以供您尝试;不要等到最终发布后再发现您的代码无法运行。

请记住,jQuery 2.0 *不会在* IE 6、7 或 8 上运行;我们将把这项任务留给 jQuery 1.9。我们完全预计大多数互联网网站可能会继续使用 jQuery 1.x 很长一段时间,只要旧版本的 IE 仍然占很大一部分网络用户。因此,jQuery 团队也将继续支持 jQuery 1.x 和 2.x 两个分支。不要觉得在您的网站上使用 1.9 会错过什么或落后,因为 1.9 和 2.0 的 API 是一样的。

如果您想在仍然需要支持 IE 6、7 和 8 的网站上尝试 jQuery 2.0,您可以使用条件注释。除了旧版本的 IE 之外的所有浏览器都将获取第二个脚本并忽略第一个脚本

<!--[if lt IE 9]>
    <script src="jquery-1.9.1.js"></script>
<![endif]-->
<!--[if gte IE 9]><!-->
    <script src="jquery-2.0.0b2.js"></script>
<!--<![endif]-->

还有许多其他环境非常适合使用 jQuery 2.0。以下是一些建议

  • Google Chrome 插件
  • Mozilla XUL 应用程序和 Firefox 扩展
  • Firefox OS 应用程序
  • Chrome OS 应用程序
  • Windows 8 应用商店(“现代/Metro UI”)应用程序
  • BlackBerry 10 WebWorks 应用程序
  • PhoneGap/Cordova 应用程序
  • Apple UIWebView 类
  • Microsoft WebBrowser 控件
  • Cheerio 或 jsdom 与 node.js
  • 内联网应用程序

在 node.js 方面,jQuery 团队现在拥有 npm 中的“jquery”和“jQuery”名称,并将很快在 npm 中发布 2.0 版本。

您可以从 jQuery CDN 获取此最新 beta 版

https://code.jqueryjs.cn/jquery-2.0.0b2.js

要使用 jQuery 2.0 运行 1.9 之前的代码,您还可以使用 jQuery Migrate 插件 来恢复这些旧版本中的已弃用功能和/或诊断兼容性问题。我们强烈建议您对旧代码使用 Migrate,它将节省您调试时的大量时间和麻烦。

新增功能

大量错误修复:所有来自 jQuery 1.9.1 和 1.9.2pre 的相关修复都已合并到 jQuery 2.0 beta 2 中。我们很遗憾不得不回退一些不受旧版 WebKit(如 Android 2.3)支持的优化,但其中大多数对大小影响并不大。尽管如此,我们还是计划尽快将它们带回来!为了帮助我们,每当您看到一部旧的 Android 手机时,您都可以“意外地”用锤子敲击它。

新的 .data() 实现:此新代码由 Rick Waldron 完全重写。它更小、更简单,而且比旧代码更容易维护。

自定义构建中的模块化程度提高:如果您愿意使用 .on("mouseover"...) 而不是 .mouseover(...),您现在可以排除所有冗余的事件简写,例如 .mouseover(...)

最小的选择器引擎:Richard Gibson 创建了一个围绕浏览器原生 querySelectorAllmatchesSelector API 的小型包装器,可以用作完整 Sizzle 选择器引擎的替代品。但是请注意,支持的选择器和语义存在 重大差异。例如,此最小引擎不支持 jQuery 选择器扩展,例如 :radio:first

自定义构建

我们希望您尝试基于 grunt 的自定义构建系统。 自述文件 详细介绍了如何创建自定义构建。从 beta 2 开始,您可以用一个简单的选择器引擎替换 Sizzle,并排除 css、事件别名、动画、偏移量和已弃用功能(例如 .andSelf(),该功能尚未删除)。此外,您还可以排除脚本、JSONP 或 XMLHTTPRequest 传输的子集。没错,拒绝我们 jQuery 现实中的任何模块,并用您自己的模块替换它。

以下是一个使用模块化构建可以节省多少内容的示例。假设您不需要 css、偏移量、尺寸或已弃用模块,并且计划完全通过 CSS 过渡和类来完成动画。此外,您只通过 $.ajax() 使用 JSONP。您将使用 .on() 来管理事件,并将保持选择器简单,以便最小选择器引擎可以完成工作。执行此操作的构建命令是

grunt custom:-sizzle,-css,-event-alias,-effects,-offset,-dimensions,-deprecated,-ajax/xhr

来自该自定义构建的结果文件在通过 gzip 传输时只有 17,530 字节,比完整 2.0 构建的 29,387 字节 gzip 小 40%。相比之下,当前 1.9 分支的 gzip 大小为 32,770 字节。

我们仍然认为,大多数 jQuery 用户最适合使用最简单的选项:使用 jQuery 的完整版本,从 CDN 或您的本地服务器提供服务。大多数 jQuery 插件的编写方式不允许您使用 jQuery 核心功能的子集——毕竟,它们从未想过会缺少任何功能!但对于值得花时间确定这些依赖关系的情况,jQuery 当前的模块化水平提供了极佳的灵活性。

衷心感谢以下为本版本贡献修复的人员:Adam Coulombe、Andrew Plummer、Danil Somsikov、Dmitry Gusev、Isaac Schlueter、James Burke、Jean Boussier、Julian Aubourg、Karl Sieburg、Mark Raddatz、Mike Sherov、Nguyen Phuc Lam、Oleg Gaidarenko、Pascal Borelli、Richard Gibson、Rick Waldron、Ryunosuke Sato、Timmy Willison 和 Timo Tijhof。特别感谢 Scott González 的极简主义作品,标题为“空格”。

变更日志

Ajax

构建

核心

Css

延迟

效果

事件

操作

选择器

支持

遍历

关于“jQuery 2.0 Beta 2 发布”的 37 条想法

  1. Esteban Saa 说:

    这是个好消息,尤其是对于移动开发者来说。有了此版本,解析时间有望减半。

    我希望 JQM 团队能充分利用此新的自定义构建系统,并使其与他们自己的自定义构建系统一起使用。这样我们就可以生成一个更有效率的代码块。

  2. 你还是不能比较 Zepto.js 和 jQuery 2 的文件大小,压缩后 gzip 的文件大小分别为 10.9?KB 和 29.1?KB。jQuery 的体积几乎是 Zepto.js 的 3 倍。

  3. @Binyamin: 你觉得这其中的区别是什么?如果 Zepto 解决了 jQuery 社区多年来修复的问题,它的大小也会类似。这种文件大小应该不是问题,稳定性才是最重要的。

    如果 Zepto 继续存在,它的大小也会增长到类似的大小。不过我认为它不会,因为人们已经意识到了这一点。给自己一个机会,选择稳定可靠的框架吧。

  4. jquery 1.9 和 2.0 之间的区别不到 3.4 KB(gzip 压缩后)。对于如此小的区别,值得维护两个版本吗?感谢你们的辛勤工作 :)

  5. 我正在阅读我的电子邮件,心里不停地对自己说“我没有时间做这个”,然后按下删除键。我对自己说:“唯一能让我想做的事情,就是 jQuery 发布 2.0 版本……”

  6. 最近我更喜欢 microjs.com 的东西(以及 TJ Holowaychuk 的组件),因为它们体积小,而且模块化,不过 jQuery 是唯一能够在进行客户端工作时让你放心地跨浏览器运行的框架,而且你只需要交付就行了。所以这个 2.0 版本(以及其中的所有新功能)看起来在正确的时间出现了正确的东西。

  7. “请记住,jQuery 2.0 无法在 IE 6、7 或 8 上运行。”

    也要记住,这是一个非常糟糕的决定。现在还不是放弃 IE7 和 IE8 的时候。放弃 IE6 可以,但 IE7 和 IE8 仍在使用,客户要求网站(至少)能在这些浏览器上正常运行。网页开发者可能决定不在 IE8 上让他们的网站正常运行,但 jQuery 不应该立即为所有人做出这个决定。

    因此,放弃对在 Windows XP 上运行的最新 IE(即 IE8)的支持是一个可怕的决定,iyam。这将阻止许多(如果不是所有)jQuery 的商业用户升级到 2.x 版本。

    抱歉,关于 jQuery 2.0,我只能(而且会继续)说这些。
    放弃 IE6,但支持 IE7 和 IE8,这样我才能再次尊重你们。

  8. @dmethvin
    是的,我读了,使用两个不同的 jQuery 版本。欢迎来到地狱。我绝不会那样做。

  9. @martijn
    “不要因为在你的网站上使用 1.9 版本而感到自己错过了什么或者落后了,因为 1.9 和 2.0 的 API 是相同的。”

    好了,他们没有强迫你使用两个版本,IE6,7,8 在使用完整的 jQuery 功能版本的情况下是可以支持的。jQuery 2.0 仅适用于那些不依赖 IE 支持的用户,但更高的文件大小 / 复杂度 / 速度可能是一个问题(例如移动应用程序中的 WebView)。

  10. Herbert Peters 说:

    @ Robert McLaws
    如果你尝试一下,它确实按发布的方式工作。仔细检查 gte IE9 部分中的额外注释标签。

  11. Ernest Burnett 说:

    我非常同意 @martjin 的观点。我们刚刚摆脱了文档类型,现在我们需要为 javascript 和 jquery 制定标准化。WordPress 将于 29 日更新,有没有人与他们协商过他们将在框架中支持哪些库?这种问题会一直持续下去,因为无数的集成会带来这种问题。我不想携带两个版本,或者必须记住哪个版本需要做什么,你永远无法摆脱 1.9.x,而这会导致你们自己失败。

    Robert 的示例证明了这一点——虽然条件注释不适用于 IE10+,但这并不是最明智的做法。如果你安装了 IE10,我可以想象测试工作脚本和 lte/gte 注释会非常困难。

  12. 太可惜了,“grunt”根本无法正常工作。

    path.js:313
    throw new TypeError('Arguments to path.resolve must be strings');

    ..我已经看到这个好几周了。真是一段有趣的时光。

  13. Basavaraj 说:

    我在我的 phonegap 应用程序中使用 2.0,并希望在 5 月初上线。

    你们对此有什么看法?我将在我的构建中打包 2.0,而不是引用 CDN。

    另外,2.0 的发布目标是什么?

  14. @ernest,我阅读了回复,但我不确定你想说什么。如果你觉得决定或理解太难,你可以安全地对所有浏览器使用 1.9。我们没有强迫任何人使用 2.0 或条件注释。