jQuery 3.0 —— 下一代的jQuery

根号三
根号三
2015-11-05
阅读大约 5 分钟

2014 年 10 月 29 日,jQuery 官方博客上更新了一篇博文,描述了关于下一代 jQuery 的一些信息。实际上这篇博文至今都已经一年时间了,jQuery 官方团队也早在 2015 年 7 月 13 日发布了 jQuery 3.0.0-alpha1 版本。我之前也只是匆匆的看过一遍,今日闲着无事,就尝试翻译了一下并发布了这篇迟到了一年的译版,想要了解 3.0 中的新特性的话可以关注我后续的更新。

正文开始

很难相信从 jQuery 发布以来已经过去八年了,过去的这些年 Web 开发已经改变了很多, jQuery 也随之变化着。在这个过程中,团队一直在保持对旧代码的兼容性和支持目前最好的 Web 开发实践之间努力平衡着。

其中最好的做法就是语义化版本,或者简单的称之为 semver,从实践的角度看,semver 给了开发者(以及构建工具) 一个避免由于切换软件版本导致的风险的方法。版本号为 MAJOR.MINOR.PATCH 的格式,并且其三个组成部分均为整数。在semver 中,如果 MAJOR 改变了,就意味着在 API 中出现了不兼容的改变,因此开发者们需要当心。

jQuery 中版本控制变得更加微妙,(对 jQuery 来说) 浏览器的兼容性和 API 的兼容性同等重要。为了创造一个 “苗条” 的 jQuery ,团队在 2013 年开始放出了两个版本。第一个版本保持着 1.x 的编号,当前(截止到原文发布时)最新版本为 1.11.1,其保持了最大数量的浏览器兼容性。第二个版本从 2.0.0 开始,目前是 2.1.1,为了精简代码,放弃了对 IE8 及其以下版本浏览器的支持。1.x 和 2.x 版本的 jQuery 都有着相同的公开 API,尽管他们在内部实现上有一些不同。

我们的下一个版本将会使用一种全新的命名方式。像之前一样,仍然会有两个不同的发布文件。现在的 1.11.1 版本的继任者将被称之为 jQuery Compat 3.0jQuery 2.1.1 则将由 jQuery 3.0来接替。在 npmBower 上(译者注: 这是目前非常流行的前端包管理工具),它们会是两个不同的包,但它们会共享同一个版本号,来说明它们在 API 层面上的行为是一致的。

这次版本发布之后,我们也将调整对浏览器的支持策略。主 jQuery 包将继续保持短小精悍,并且只支持在发布之时广泛使用的常青浏览器(evergreen browsers 指的是特定浏览器的当前和此前的若干版本)。我们也会根据市场份额在这个包的基础上支持更多的浏览器。而 jQuery Compat 包则提供更广泛的浏览器支持,但是付出的代价就是文件变得很大,执行效率也会低一些。

尽管这一次版本号跳跃很大,但是对于大多数 jQuery 代码来说,我们不期望造成很多的代码迁移问题。我们在这次版本升级中可是符合 semver 中的好公民的标准的。诸如像移除已废弃的方法这样的改变会被新版本的 jQuery Migrate 插件检测出来,这样一来,发现并且修复他们就变得容易多了。我们也会在将来的博客文章中讨论这些变化中的更多细节。

下面就是一些 jQuery API 3.0 版本要说的内容:

  • 如果你需要支持更多更广泛的浏览器,包括诸如 IE8, Opera 12, Safari 5 等,请使用 jQuery-Compat 3.0.0 版本。我们建议大多数网站都使用这一版本,因为它为网站的来访者提供了最好的兼容性支持。
  • 如果你的网站仅仅是为了那些最先进的浏览器而建,或者仅仅是一个基于 HTML 的应用以嵌入一个 web 视图(例如: PhoneGap,Cordova),你预先知道其使用的是哪一个浏览器解析引擎, 那就使用 jQuery 3.0.0 吧。
  • 除非我们宣布,否则对应的主、次版本号相同的两个包都会有相同的公开 API。这样开发者就能够很容易的在两个包之间切换,并且在第三方 jQuery 插件中拥有最好的兼容性。

未来每一个版本发布的时候,我们都会同时放到 npmbower 上。两个包也会以单个文件的形式在 jQuery CDN 上提供。在那里使用他们和根据你自己的需要去包含 jquery-compat-3.0.0.jsjquery-3.0.0.js 一样简便。我们也和 Google’s CDN 的运营人员谈过,他们也会为这两个包提供支持。

随着我们在 3.0 版本方面工作的推进,我们会向所有人告知代码变更、浏览器支持等一切细节的更新。敬请期待吧!

本文根据 Dave Methvin 的《jQuery 3.0: The Next Generations》所译,整个译文带有自己的理解与思想,如果译得不好或有不对之处还请同行朋友指点。如需转载此译文,需注明英文出处:http://blog.jquery.com/2014/10/29/jquery-3-0-the-next-generations/

相关链接