难以置信 jQuery 发布至今已近八年。近年来,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 视图(例如 PhoneGap 或 Cordova)中的基于 HTML 的应用程序,您知道使用哪些浏览器引擎,请使用 jQuery 3.0.0 包。
- 在我们另行宣布之前,这两个包都将在相应的编号的主要版本和次要版本中包含相同的公共 API。这应该让开发者能够轻松地在两者之间切换,并最大程度地与第三方 jQuery 插件兼容。
在未来的每个版本中,我们都会在 npm 和 bower 上提供这两个包。这两个包也将作为单文件构建版本在 jQuery CDN 上提供。从那里使用它们非常简单,只需根据您的需要包含 jquery-compat-3.0.0.js 或 jquery-3.0.0.js 即可。我们已经与运营 Google CDN 的人员进行了沟通,他们也将支持这两个包。
随着我们在 3.0 版本上的进一步进展,我们将更新大家有关代码更改、支持的浏览器等的信息。敬请关注!