jQuery 3.0:新一代
难以置信,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 版本的简短总结。
- 如果您需要支持包括 IE8、Opera 12、Safari 5 等在内的各种浏览器,请使用 jQuery-Compat 3.0.0 包。我们建议大多数网站使用此版本,因为它为所有网站访问者提供了最佳的兼容性。
- 如果您的网站仅针对常青的领先浏览器构建,或者是一个包含在 Web 视图中的基于 HTML 的应用程序(例如 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 版本上取得更多进展,我们将向大家更新有关代码更改、支持的浏览器等详细信息。敬请关注!
jQuery Compat 3.0 似乎是支持旧浏览器的版本奇怪的名称。jQuery Legacy 3.0 或者类似的名称似乎更具描述性。Compat 只是让人困惑,让人觉得是缩小版本之类的。
Compat,我想,意思是“兼容”。
哈哈!我把它读成了 compact 而不是 compat。哎呀!:)
+1 支持“jQuery Legacy”,您不是唯一一个将“compat”读成“compact”的人。
>>哈哈!我把它读成了 compact 而不是 compat。哎呀!:)
我也是。
再支持一个“jQuery Legacy”,更不让人困惑,读起来也更顺口 ;-)
我同意 compat 会被读成 compact,但 jQuery Legacy 意味着它是一个旧的、不受支持的版本。我不喜欢对单词进行任何不必要的缩写,这是一个很好的例子。名称应该是“jQuery compatible”。多出 4 个字符有什么区别呢?
“表示已被取代但由于广泛使用而难以更换的软件或硬件”。
该库不是遗留的。它兼容的浏览器是遗留的。
+1 支持“jQuery Legacy”。- 它听起来很不错。我认为遗留的意思是它为需要旧库的遗留插件提供支持。
哎呀,我也把它读成了“compact”,直到我看到了评论区!
……我也投票支持“JQuery Legacy”。(我喜欢它的读音,它也支持“遗留”浏览器)对我来说有意义。
jQuery 团队干得好!你们继续在庞大的规模上为优秀的开源项目管理树立榜样。
+1 支持 compat。Lodash 和其他库也使用它。人们会学会的,还有“contrib”。
如果我没看评论,我可能不会注意到是 compat 而不是 compact。所以 +1 赞成 Legacy。
+1 赞成 compat。因为我知道怎么阅读。而且因为我的自尊心没有大到以为可以改变软件的名字,他们很可能已经花了不少时间思考并且刚刚宣布了。
我绝对更喜欢 “compat” 而不是 “legacy”。正如指出的,“legacy” 听起来像是 jQuery 本身的旧版本,并且在某种程度上功能受限或过时了。
抛开对命名的小争论,我很喜欢这次改变。它使兼容性版本的活跃开发状态更加显眼,并有助于消除对新开发应该选择哪个版本的困惑。为 jQuery 团队点赞。
我不知道这对这个项目来说是否可行,但是 jQuery 3.0 Compat 是否可以将 jQuery 3.0 核心与旧 IE 等浏览器的向后兼容方法进行猴子补丁,而不是从头开始创建一个独立的库?这样,每个人都可以从包含相同的 jQuery 3.0 基础库开始,这对于简化和 CDN 缓存命中来说是理想的。然后,如果您需要 compat 支持,您可以在下一行包含 jQuery 3.0 Compat(使用条件注释,类似于今天为有条件地包含 1.x 或 2.x 的标准方法,也许?)。
+1 赞成 jQuery legacy 听起来比 compat 好多了。
对于那些参与 “compat” 命名争论的人来说——Android 一直在他们的 appcompat 库中使用 “compat” 后缀(https://developer.android.com.cn/tools/support-library/features.html#v7-appcompat),这些库将新的操作系统库移植到旧的手机上。所以它在 jQuery 世界之外有一个标准,虽然我在 JavaScript 世界从未见过它。
Lodash 也使用它,但它是默认的,所以大多数人从未注意到。他们还使用了一个 “modern” 版本,在这个案例中,它与普通的 jQuery 相同。
既然 jQuery Compat 将是最常用的版本,为什么不直接把它叫 jQuery,然后把另一个版本改名为 jQuery Light 之类的东西?这样一来,开发人员首先想到的就是使用 jQuery,然后注意到有一个轻量级版本,他们会检查缺失了什么,以及是否可以使用它代替。
为什么不叫 jQuerIE?
开玩笑啦。
从评论中还了解到,它不是 jQuery-Compact,而是 jQuery-Compat。
+1 赞成 jQuery-Legacy。
作为一名开发者,我对命名的一些背景信息。
在 Linux/Unix 世界中,“legacy” 和 “compat” 的命名约定已经存在多年。Legacy 通常用于表示已经停产的东西,Compat 通常用于表示添加了兼容性功能的专用软件包。
所以,如果 jQuery 将他们的 “compat” 版本改为 “legacy”,可能会引起全世界开发者的警觉,因为他们会认为某个特定的开发分支将要停产,并且对它的支持将被取消。
另外,我喜欢我听到的关于这些变化的消息,包括命名和其他方面。继续努力吧!
说真的?新的主版本发布,并且分裂了版本,而每条评论都在讨论命名?
我不会在这上面浪费更多带宽了。我个人对 JQ 团队改变了 Web 开发并且做出了这个重大而受欢迎的举动表示赞赏。
我认为保持两个 API 兼容的版本,但具有不同的浏览器支持级别,是一个好主意,但我不知道 Legacy 或 Compat 是否是好名字。奇怪的是,我认为将 Compat 版本称为 jQuery + Legacy 或 jQuery + Compat 可能是一个更好的方法来区分两者。
我认为真的没有一个明确、明显的选择,所以它可能并不重要。
是的。请不要叫它 Compat。它听起来不太描述性,很容易与 Compact 混淆,就像为轻量级或移动浏览器构建的东西一样。Legacy 很不错。
作为一名 MooTools 开发者,我强烈建议避免使用 compat,它会造成很多混乱,因为人们认为它意味着与其他库兼容(或者只是更兼容),并且会比新代码更多地使用它,legacy 在我的理解中会是一个更好的命名,但是
我也觉得 1.11.1 转向 3 比较奇怪。它会在大多数人了解情况之前造成很多混乱。但是,我确实很感谢他们对 compat 版本的努力。干杯!
我的上一条评论中没有“但是”,我只是不小心在我的 Android 键盘上按了一些建议,并且在上班途中按下了提交按钮,哈哈。
+1 赞成 jQuery-Legacy。
我也读成了 comapct。
Compat 读作“Compact”,我也投票给 Legacy!
+1 支持“Legacy”,因为没有处理遗留问题就无法前进。
我喜欢 Dave Ward 提出的想法。想听听 jQuery 团队对此的反馈。作为一名开发者,他的方法听起来更易于维护和简化。
+1 支持“compat”。很少有开发者用‘compact’来表示压缩,我们会用‘min’来表示…所以它很明显。
“Legacy”听起来像是已经不再维护的旧版本。它没有传达保持更新的感觉。-1 不支持“Legacy”。
我不敢相信人们看不出“compat”很容易被误认为“compact”。
它不必是“legacy”(尽管它有意义),但一些更不容易引起混淆的东西会更好。
如果他们说 Compat 应该在大多数情况下使用,那么它可能是 jQuery,另一个可能是 jQuery Lite 或者其他什么。
是的,你们都说得对,我们应该把名字改成一些没有意义的东西,因为你们不会读。
+1 支持 JQuery-update-your-browser-dude
Polymer 等支持 Shadow Dom 吗?
Compat 很容易混淆,Legacy 表示旧的或过时的。也许我们可以使用这两个版本
jQuery 3.0
jQuery 3.0 Forward
因为目前名为“Compat”的版本更受推荐,所以它应该是默认名称。只有在特定情况下(只支持较新的浏览器)推荐使用的一种应该带有额外的词语(在我的建议中,“Forward”),以将其视为“特殊”、“超越”或“替代”主 jQuery 3.0 库的东西。
那些感兴趣的人会去寻找“Forward”的含义,而那些没有注意的人会下载与大多数浏览器兼容的那个,而不是需要调查“Compat”对他们意味着什么。
在 Angular 世界目前发生的灾难之后,这是一股清新的空气 :-)
是的,我把它读成“compact”。如果“Legacy”不是一个好的选择,也许就直接使用完整的词“compatible”。对每个人来说都超级清楚。
为什么要继续更新旧的 IE 版本?我们不应该迎合那些拒绝更新的人(或 IT 部门),这只会鼓励他们继续阻碍创新。
仓库中的源代码是否支持 commonjs,而不是 AMD?
我宁愿看到一个 jQuery 兼容性插件来扩展主版本,而不是维护两个版本。如果你需要支持某个浏览器,那就让它可扩展,特别是如果你可以按浏览器进行扩展。
哇,你们这些家伙,Compat 很好。我第一次读它就读成“compat”,你们都是程序员,不是吗?你们的大脑应该很容易识别出来。如果你第一次读错了,你应该使用演绎推理并排除 compact,然后重新阅读这个词,因为 compact 毫无意义。即使你确实读错了,谁在乎呢?Compact 或 compat,他们可以随便叫它什么,也许叫它 dinosaur。JQuery Dinosaur:针对旧浏览器。
一系列建议 legacy 的评论没有建设性。它非常清楚地表示为 compat。Compat 是一个很酷的假词。
至于 legacy,它也不是一个糟糕的选择,legacy 确实给出了“已弃用”的含义,但实际上,它就是这样。旧浏览器自然被弃用,任何支持它们的浏览器也被弃用。
我更喜欢这样的语法
这样每个新网站都会使用最新的 jQuery 3,但其中一部分也会包含 jQuery 3 兼容库,该库会用与旧浏览器兼容的方法覆盖某些功能。
语法被隐藏了:类似于
include jquery-3
include jquery-3-compat
我把它读成 jQuert Kompot。这将是美味的。
谁在乎这个名字…你们都错过了最重要的问题。这一切什么时候发生?我没有看到任何关于时间范围的提及。