jQuery
是迄今为止在网络上运行时间最长、影响最大的 JavaScript
库之一,市场占有率达到了惊人的 78%
,最高时超过 千万
个网站以各种方式使用 jQuery
,根据 BuiltWith
的统计至于现在最受关注的 JavaScript
库 React
的使用率只有相对微不足道的 14%
。
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
更持久。
对此你怎么看呢?
参考:https://thenewstack.io/why-outdated-jquery-is-still-the-dominant-javascript-library/