00:00:00jQuery 4 终于发布了。别担心,你并没有穿越时空,这
00:00:04只是我们自 2016 年以来的首次重大版本更新。它已经处于测试阶段两年了,
00:00:09而距离 jQuery 首次面世已经过去了 20 年。
00:00:12你可能会惊讶地发现 jQuery 依然举足轻重。全球 88% 的网站
00:00:17仍在映射使用它,这很大程度上要归功于 WordPress,但你也能看到一些
00:00:21知名大厂也还在运行它。毕竟,如果东西没坏,就不要去修它。
00:00:25不过这次更新确实可能会导致一些兼容性问题,因为他们借此机会
00:00:29完成了多年来一直想做的所有破坏性变更,包括精简过时代码、
00:00:32移除弃用的 API 和从未公开的函数,以及大量的错误修复。
00:00:38那么让我们直接开始,看看这些核心变化,以及 jQuery 在这
00:00:4220 年间究竟进化了多少。
00:00:49第一个重大变化:让我们告别 Internet Explorer 10 及更早版本。
00:00:53jQuery 4 已经停止支持这些版本了。但如果你正在用 IE 11 观看此视频,也不必惊慌,
00:00:58对它的支持要到 jQuery 5 才会停止,所以你还有时间点击那个订阅按钮。
00:01:02除此之外,他们还停止了对旧版 Edge、过去 3 个版本之前的 iOS、
00:01:07过去 2 个版本之前的 Firefox 以及安卓原生浏览器的支持。
00:01:12可见我们正在全面迈向现代化。事实上,接下来的三个变化都与此有关。
00:01:17来看第二个变化:他们正将 jQuery 源码从 AMD 迁移到 ES 模块,
00:01:22因此它现在可以与 Vite、Webpack 等现代构建系统完美配合,无需任何特殊技巧。
00:01:27所以,为什么不在你的下一个项目中尝试安装它呢?哪怕只是为了好玩
00:01:31或者怀旧一下。
00:01:33说到怀旧,这次更新会让你看到 JavaScript 进步了多少。
00:01:36因为在第三个变化中,他们移除了一堆 jQuery 函数,原因很简单:
00:01:41原生 JavaScript 已经追上来了。这包括 isArray、parseJSON、trim、now、
00:01:46isNumeric、isFunction 等等。你现在几乎可以在原生
00:01:51JavaScript 中完成所有这些操作,而不需要额外的库。想想也挺不可思议,
00:01:56我们最初竟然需要一个库来处理这些基础功能,但这就是语言进化的必经之路。
00:02:00说到进化,浏览器也在进步。因此第四个变化,也是最后一个现代化的重大更新,
00:02:01是他们终于修复了焦点顺序问题。
00:02:06如果你不知道的话,多年来各大浏览器在 focus 和 blur 事件的顺序上一直没达成共识,
00:02:11所以 jQuery 以前有自己的一套定义来保证跨浏览器的一致性。
00:02:15但现在,由于他们弃用了旧版浏览器,除了 IE 以外的所有受支持浏览器
00:02:20都有着完全相同的事件顺序,因此 jQuery 不再需要覆盖原生居为了。
00:02:24你可以看到团队在这里专注于让 jQuery 现代化,因为过去让 jQuery 大放异彩的功能,
00:02:29大多最终都被添加到了原生 JavaScript 中。
00:02:34不过 jQuery 中仍有一些可以现代化的东西,比如 Deferreds 和 Callbacks,
00:02:38它们现在可以用 Promises 替代(除非你还在用 IE 11);还有一些
00:02:42以前人们用 jQuery 做的动画,现在用 CSS 就能轻松实现。
00:02:47如果你想更进一步,他们推出的精简版(slim build)剔除了大量
00:02:52这些额外的模块,体积仅为 19.5 KB。我觉得这种做法非常棒:
00:02:55在完整包中为有需要的人保留这些函数,
00:03:01同时提供一个不含任何现今多余功能的精简版本。
00:03:04以上就是主要的核心变化,当然还有大量的错误修复和微调,
00:03:08其中一些甚至可以追溯到多年前。我能找到的最早的一个是 2014 年的,
00:03:12是关于 jQuery 自动将 JSON 提升为 JSONP 的问题,现在已经修复了。
00:03:17甚至还有一个 2015 年的问题,我记得我以前也遇到过:jQuery 的 CSS 设置器
00:03:22会自动给任何没写单位的数值加上像素(px)。
00:03:28这也被修复了。除此之外还有很多值得你去探索的地方,
00:03:33甚至包括一些随手修复的拼写错误。当然,这些要在视频里逐一讲解会花很长时间。
00:03:37就个人而言,我只想看看 jQuery 现在的样子,看看它是如何走过来的,
00:03:42因为它确实是 Web 开发史上的一段精彩历史。
00:03:46或许说它是“历史”还有点不礼貌,因为它目前依然被活跃地使用和维护着。
00:03:51虽然我今天肯定不会放着 React 或其他现代框架不用而跑去用 jQuery,
00:03:56但它提醒了我们,互联网是建立在技术层层叠加之上的。
00:04:01有时候,正是这些乏味、简单且陈旧的工具在维系着整个网络,
00:04:06特别是那些没人敢乱动的关键旧项目。所以我想问问看到这里的各位,
00:04:10你们用过 jQuery 吗?或者现在还在用吗?请在评论区告诉我,
00:04:15顺便点个订阅。一如既往,我们下期再见。
00:04:19you in the next one.