jQuery 3.0:下一代
难以置信 jQuery 已经发布了将近 8 年。这些年来,Web 开发发生了很大变化,jQuery 也随之改变。在这段时间里,团队一直在努力在保持与过去代码的兼容性与支持当前最佳 Web 开发实践之间取得平衡。
其中一个最佳实践是语义版本控制,简称 semver。从实际意义上讲,semver 让开发人员(以及构建工具)能够了解迁移到新软件版本所涉及的风险。版本号采用 MAJOR.MINOR.PATCH 的形式,三个组件都是整数。在 semver 中,如果 MAJOR 号码发生变化,则表示 API 中存在重大更改,因此开发人员需要注意。
jQuery 的版本控制概念稍微复杂一些,因为浏览器兼容性与 API 兼容性一样重要。为了创建更精简的 jQuery,团队从 2013 年开始发布两个版本。第一个版本仍然使用 1.x 版本号,目前为 1.11.1,保持与最大数量的浏览器的兼容性。第二个版本从 2.0.0 开始,目前为 2.1.1,放弃了对 IE8 或更低版本浏览器的支持,以简化代码。jQuery 的 1.x 和 2.x 版本具有相同的公共 API,尽管它们的内部实现略有不同。
我们接下来的版本将使用不同的命名方式。与以前一样,将发布两个不同的文件。现在 1.11.1 版本的后续版本将成为 **jQuery Compat 3.0**。jQuery 2.1.1 的后续版本将为 **jQuery 3.0**。npm 和 Bower 上有两个不同的“包”,但它们共享相同的版本,以表明它们具有相同的 API 行为。
从这些版本开始,我们还将调整我们的浏览器支持策略。主 jQuery 包通过支持其发布时常见的常青浏览器(特定浏览器的当前版本和前一个版本)来保持小巧紧凑。我们可能会根据市场份额在这个包中支持其他浏览器。jQuery Compat 包提供更广泛的浏览器支持,但代价是文件大小更大,性能可能更低。
尽管版本号大幅跳跃,但我们预计大多数当前 jQuery 代码不会出现太多迁移问题。我们只是在这个版本升级中成为良好的 semver 公民。新版本的 jQuery Migrate 插件 将检测到删除弃用方法等更改,使其易于查找和修复。我们将在以后的博客文章中详细介绍这些更改。
因此,以下是 jQuery API 3.0 版本的 TL;DR
- 如果您需要支持包括 IE8、Opera 12、Safari 5 等在内的最广泛的浏览器,请使用 jQuery-Compat 3.0.0 包。我们建议大多数网站使用此版本,因为它为所有网站访问者提供最佳兼容性。
- 如果您的网站仅针对常青的领先浏览器构建,或是一个包含在 Web 视图中的 HTML 应用程序(例如 PhoneGap 或 Cordova),并且您知道使用了哪些浏览器引擎,请选择 jQuery 3.0.0 包。
- 在另行通知之前,这两个包将包含相同的公共 API,分别对应编号的 major 和 minor 版本。这应该使开发人员能够轻松地在两者之间切换,并与第三方 jQuery 插件最大程度地兼容。
在未来的每次版本发布中,我们都会在 npm 和 bower 上提供这两个包。这两个包也将在 jQuery CDN 上作为单文件构建提供。从那里使用它们非常简单,只需根据您的需求包含 jquery-compat-3.0.0.js 或 jquery-3.0.0.js 即可。我们已经与运行 Google CDN 的人员进行了交谈,他们也将会支持这两个包。
随着我们在 3.0 版本上取得进一步进展,我们将与大家分享有关代码更改、支持的浏览器等详细信息。敬请关注!
期待这些变化以及 jQuery 的未来。
热切期待发布。
期待更有趣和激动人心的新内容。同时,如果 jquery compat 3.0.0 更轻量级,或者至少在大型项目中使用起来更有效,那就更好了。
太酷了!我一直期待 Apache Cordova 专用的 jQuery!迫不及待想试试!
如果 jQuery 的现代版和“兼容”版 3.x.x 版本经常同时发布并保持 API 一致性,那么开发人员可以实现服务器端浏览器检测,并根据需要动态提供相应的库。只要避免代理的中间缓存,浏览器仍然可以缓存脚本以供重复使用,从而避免额外的主机访问。
坦白说,jQuery 3 已经发布了几年了,被称为原生 js。
怎么样,构建时人们可以选择他们需要的 jQuery 功能,不再更多?
绝对支持 +1,用于 jquery-legacy。
Dave Ward:让 jQuery Compat 只使用 jQuery 并修补方法是不可能的。这两个版本之间的差异非常大,一些模块已完全更改。
我们将来可能会(也许吧,不要强求)为 Android 2.3 做这样的事,但 IE<9 实在太糟糕了。
迫不及待想使用它。
如果它比以前更轻量级,并且可以处理所有项目,那就更好了。
我也想知道什么时候会发布!
我在等待。
我想我确实需要更多信息才能得出任何结论。但感觉 2.x 还没站稳脚跟,3.x 就出现了?感觉不太对劲。而且有一个“兼容”版本的 jQuery 似乎并没有简化我的理解… 比如,jQuery Compat 3.0 和 jQuery 1.1.1 之间有什么区别?内部变化很大,但表面上 API 一样吗?
如何直接将其寿终正寝呢?
关于 ECMAScript 6 特性,这其中有部分吗?
+1 支持语义化版本。
那么为什么不在 CDN 上添加 jquery-3.js 或 jquery-3.x.js,它始终返回最新的次要版本?
@yguedidi
> 那么为什么不在 CDN 上添加 jquery-3.js 或 jquery-3.x.js,它始终返回最新的次要版本?
因为引用 CDN 上会变化的文件是一种不好的做法。它基本上会阻止缓存;此外,每个补丁版本都有可能(不应该,但有可能)引入破坏,因此你应该始终手动更新 jQuery,而不是在活动网站上自动更新。
@数字果园
> 但感觉 2.x 还没站稳脚跟,3.x 就出现了?
为什么这很重要?这只是一个版本号,我们不想破坏那些在 npm 上包含“^1.11.0”的人,因为这会自动获取 1.12.0。
> 比如,jQuery Compat 3.0 和 jQuery 1.1.1 之间有什么区别?内部变化很大,但表面上 API 一样吗?
jQuery Compat 3.0.0 将是 jQuery 1.11.1 的延续。这将是原本称为 jQuery 1.12.0 的版本。
> 内部变化很大,但表面上 API 一样吗?
API 变化不大,但会有破坏性变更。
我迫不及待地期待着。什么时候发布?
名称可以改为以下内容吗?
JQueryWeb
以及
JQueryEmbedded
这样一来,就没有简单的“JQuery”,避免与旧版本混淆。此外,任何在公共网站上使用 JQuery 的人,都应该支持的不仅仅是最新版本的浏览器。Web 版本将支持所有常用的浏览器(例如,不包括 IE6 等)。
不错
我想在我的下一个项目中包含这个新版本… 我喜欢 jQuery
酷
你们会更新 jQuery 的 Deferred 和 Promises 实现以匹配 ECMAScript 6 Promises 规范吗?如果所有 Promises 都能承诺相同的承诺,那将很不错。
GITHUB 似乎很有希望?
@罗伯特
> 你们会更新 jQuery 的 Deferred 和 Promises 实现以匹配 ECMAScript 6 Promises 规范吗?
是的,我们已经有一个补丁;它应该很快就会发布。
不错,比旧版本轻量级
令人兴奋的消息 - 预计何时推出?
好的 ECMAScript 6 Promises 规范?如果所有 Promises 都能承诺相同的承诺,那将很不错。
很棒的文章 +1,来自我
alert(“dfioudsiou”);