jQuery 于 2006 年推出,当时 Ajax 一词正炒的火热。Ajax(Asynchronous JavaScript and XML)与早期 Web 2.0 时代的其他 JavaScript 技术一样,早已不再是开发者的常用语。
但 jQuery 经受住了时间的考验,事实上直到最近它还在保持逐年增长。对此, jQuery 的开发者 Michał Gołębiowski-Owczarek 分享了他的看法。
名字太长了,后面简称他 MGO 吧。
MGO 是上个月 OpenJS 博客上两篇文章的作者,里面都提到了 jQuery 正在进行的 现代化工作。
第一篇文章宣布了 jQuery UI 的新版本 —— 一个构建在 jQuery Core 库之上的用户界面库。这将是 该项目的最终版本,这意味着 jQuery UI 后面不再会有大的迭代了,仅仅会保持维护状态。
第二篇文章宣布弃用了 jQuery Mobile,这是 jQuery 的另一个子项目,为移动浏览器提供 基于 HTML5 的用户界面系统。
不过,这两个项目的结束都不会影响 jQuery 现在的主项目:jQuery Core,这意味着它短时间内不会消失在大众视野。
WordPress
虽然 jQuery 现在正在被大量使用,但现在的开发者甚至可能没有意识到他们在使用 jQuery。那是因为它被嵌入在了许多大型开源项目里面 —— 其中最著名的就是 WordPress。
很多 WordPress 的主题和插件都依赖于 jQuery。jQuery 库也是当今一些最流行的 JavaScript 框架和工具包的基础层,例如 AngularJS 和 Bootstrap(4.0 及以下版本)。
其实大多数网站都不需要复杂的开发框架,它们大多是具有一些动态行为的静态网站(这种网站通常都会用 WordPress 编写),jQuery 在这个场景下仍然很流行,因为它既简单又有效。
而且,在未来的很长一段时间,jQuery 还继续会是 WordPress 的一部分,因为它很难在不破坏向后兼容性的情况下将它删除。
随着时间的推移, WordPress 肯定会逐步更新它的技术,但是这应该是一个渐进式的过程。
但是, WordPress 的社区里已经出现了一些反对的声音, 在 WordPress 主题中使用 jQuery 的性能影响 就是一个比较热门的话题。
GMO还表示:jQuery死了吗? 这样的文章已经流传了好几年了,至少目前在 WordPress 生态系统中它仍然很活跃。如果谁鼓励开发者们把它替换掉,风险自负。
jQuery 以前的角色
当 jQuery 的创造者 John Resig 于2006 年 1 月在 BarCampNYC 发布它的以一个版本时,他写道:
这段代码彻底改变了让 Javascript 与 HTML 交互的方式。
他主要指的是 jQuery 使开发者可以更轻松地操作 DOM。要知道,这是在谷歌浏览器逆袭之前,现在微软臭名昭著的 Internet Explorer 占据了 85-90% 的浏览器市场,其中 IE6 占主导地位。即使在当时,IE6 也以历史上最糟糕的浏览器而闻名。
Resig 还在2006 年 6 月的一篇帖子中指出了 JavaScript 开发者在浏览器上遇到的一些问题:
JavaScript 中存在许多问题(其中大部分源于浏览器不兼容),任何稍微复杂一点的应用程序都需要处理诸如规范化事件处理、DOM 节点选择、动画渲染这些问题。
这也正是 Resig 着手解决的问题。当时“四大”领先的 JavaScript 库是 Dojo、MochiKit、Prototype/Scriptaculous 和 Yahoo UI 。
所以基本上,jQuery 的发明主要是为了帮助开发者处理当时浏览器的不足。
jQuery 现在的角色
在现在各种好用的浏览器都在更加符合 Web 标准的时候,jQuery 现在在 Web 中扮演的角色是啥呢?
此外,JavaScript 标准本身在过去十年中也得到了显着改进,尤其是在 2015 年 ECMAScript 6 发布之后。
现在, React 已成为当今最受关注的 JavaScript 库。很多现代框架,尤其是 Next.js,都是建立在 React 之上的。
一些其他流行的框架,例如 Angular 都有自己的库生态系统。现在的 JavaScript 框架还允许你将 UI 分解为各种组件,从而更轻松地扩展应用程序。
GMO 谈到 Next.js 和 Angular 的时候提到:
这些框架提供了抽象,可以更轻松地在数据和视图之间进行同步。因此他们的用户不再需要如此频繁地直接修改或者访问 DOM,并且通常也不鼓励这样做。在这样的环境下,使用 jQuery 没有多大意义。但这只是整个网络生态系统的一小部分。
然而 GMO 也承认 jQuery 可能存在大规模应用程序的性能问题:
这些年来,我们大大提高了 jQuery 的性能,但也存在一些难以应对的问题。其中之一是为了不与浏览器冲突,jQuery 不会修改原生原型 — 就像其他一些库所做的那样(通常后来导致冲突 API 的标准化问题)— 而是用 jQuery 包装器对象包装 DOM 节点。每个操作都会创建一个新的这种包装器对象,在大多数情况下,这并不重要,但对于具有大量 DOM 操作的非常复杂的应用程序,这可能会成为一个问题。
最后
很明显,jQuery 不再是开发者将 JavaScript 功能添加到他们的网站或应用程序的最佳方式,尤其是在需要扩展的情况下。
GitHub 对 jQuery 的贡献远低于其高峰年(2006 年至 2013 年左右)的事实,这也意味着要使 jQuery 与我们现在的 Web 更加兼容,我们还需要做更多的事情。
不过没关系。jQuery 的持续时间比大多数开发者预期的要长得多,因为它是在 Web 2.0 时代开始时问世的。毕竟,它现在仍然可以完成它所要做的工作,而且它仍然是一个非常简单方便的 JavaScript 库。
无论如何,在未来几年内,jQuery 还会嵌入到数以千万计的 WordPress 网站中,它甚至可能比 React 更持久。
对此你怎么看呢?