很难相信 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 包仍然很小巧,通过支持当时常见的 evergreen 浏览器(特定浏览器的当前和先前版本)来实现。我们可能会根据市场份额支持额外的浏览器。jQuery Compat 包提供更广泛的浏览器支持,但代价是更大的文件大小和潜在的更低性能。
尽管版本号有很大的跳跃,但我们预计大多数当前 jQuery 代码的迁移问题不会很多。我们只是在遵守良好的 semver 规范。删除已弃用方法等更改将通过新的 jQuery Migrate 插件 检测到,以便轻松找到并修复。我们将在未来的博客文章中提供有关更改的更多详细信息。
因此,jQuery API 版本 3.0 的 TL;DR(总结)是:
- 如果您需要支持最广泛的浏览器,包括 IE8、Opera 12、Safari 5 等,请使用 jQuery-Compat 3.0.0 包。我们建议大多数网站使用此版本,因为它为所有网站访问者提供最佳的兼容性。
- 如果您的网站仅构建用于 evergreen 前沿浏览器,或者是一个基于 HTML 的应用程序,包含在 WebView(例如 PhoneGap 或 Cordova)中,您知道正在使用哪些浏览器引擎,请选择 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 的进一步进展,我们将向大家更新有关代码更改、支持的浏览器等详细信息。敬请期待!