jQuery 已经是时代的眼泪了吗

2022-11-30 0 411

公司出品|开放源码我国

做为险些大一统亚洲地区门户中文网站的后端辅助工具,jQuery 曾在 Web 2.0 富诚纯彼时锋头无两,但是随著后端控制技术的急速重构与应用程序下层国际标准的国际标准化,jQuery 却渐渐正式成为许多中文网站眼里的 “控制技术债”。

近日,美国政府中文网站 GOV.UK删掉当中文网站上大部份后端插件倚赖项 jQuery。删掉后,13 个后端插件 JavaScript 大小不一增加了 32 KB(或 31% 到 49%)间,其它多项操控性提高,项目组部份控制技术债以求去除。

2019 年,Bootstrap 4.3.1 版正式发布,合作开发项目组则表示在正式发布 v4.3 版后,将会在合作开发 Bootstrap 5 的操作过程中同时实现许多关键性变动,当中就包括舍弃采用 jQuery。

2018 年,GitHub 更新解构网页时移除 jQuery ,GitHub 后端项目组仍未采用其它架构来替代 jQuery,而要采用原生植物 JavaScript。

但是再者,依照 BuiltWith 的统计统计数据,未知早已开始采用 jQuery 的动态中文网站数目仅约 69,193,395 个,网络流量名列前一百万的中文网站中,采用jQuery 的比率仅约 75.6%。从采用统计数据上看,jQuery 武林话语权仍在,而从声浪上看,jQuery 已渐渐传位给先行者……

jQuery 已经是时代的眼泪了吗

Web 2.0,jQuery 闪耀亮相

了解 jQuery 的出场必然绕不开上世纪的应用程序大战以及 JavaScript 的出现。1994 年,Netscape 网景公司成立,合作开发出应用程序Netscape Navigator,并在四个月内占据了四分之三的应用程序市场,正式成为 1990 年代互联网的主要应用程序。

彼时网景公司的控制技术能力以及在控制技术上的战略都领先于市场。网景预见到,网络会变得更加动态,其创始人 Marc Lowell Andreessen 则认为 HTML 需要一种胶水语言,也就是脚本语言,可以方便网页设计师或者是非专业的程序员设计图片和插件等。

经过一番内部研究,网景决定发明一种与 Java 搭配采用的辅助脚本语言。1995 年 5 月,网景工程师设计出该脚本语言的原型,而网景公司和昇阳电脑公司组成的合作开发联盟为了让这个新语言蹭一波 Java 的热度,在同年 12 月 Netscape Navigator 2.0 Beta 3 中部署时,将其临时改名为 JavaScript。

JavaScript 出现后,渐渐受到合作开发者追捧。但随著 Web 2.0 对交互性需求的提高,也对 JavaScript 提出了更高的要求。再加上当时的应用程序厂商都还忙着跑马圈地,抢占市场,许多软件在不同的应用程序上无法通用,增加了软件作者的合作开发难度,jQuery 之父 John Resig 便是当时饱受折磨的程序员之一。

jQuery 已经是时代的眼泪了吗

John Resig

“做 Web 编程时,我非常讨厌应用程序的 Bug,不同的应用程序有不同的 Bug,而且数目非常多。于是我用 JavaScript 做了 CSS 选择引擎,后还做了个动画引擎,都是自娱自乐。但与此同时我发现自己不能将制作的许多应用放到应用程序里。为了将应用放到 Firefox 应用程序中,我开始制作相关的 API,以应用该 CSS 选择引擎和动画引擎,这些最终正式成为了 jQuery。几个月后,我将那些应用做进 Firefox 里,后在 IE 里也可以运行。”

John Resig 最早在 2005 年向外界展示了 JavaScript 上一个语法更简洁的 CSS 选择器,2006 年的 BarCampNYC 活动上,John Resig 正式发布了第二个新版:jQuery: New Wave JavaScript,“这段代码彻底改变了让 Javascript 与 HTML 交互的方式”。

jQuery 的设计的宗旨是 “write Less,Do More”,许多年后,John 仍将这当作是自己的目标 —— 让每个人都可以在网页里写点什么,并且写的东西能够在应用程序中顺利运行出来。

jQuery 的出现解决当时后端合作开发人员两个普遍的烦恼:让 JavaScript 与 DOM 的交互接口变得简单,增加合作开发操作过程中的跨应用程序问题。

首先是简化 DOM 操作。HTML DOM 定义了用于 HTML 的一系列国际标准的对象,以及访问和处理 HTML 文档的国际标准方法。通过 DOM,可以访问大部份的 HTML 元素,连同它们所包含的文本和属性,并对当中的内容进行修改和删掉、创建新的元素等等。在 jQuery 之前,采用 JavaScript 操作 DOM 需要定义一个函数,然后将其绑定到特定 DOM 中的各种 HTML 元素中,这对于日常采用来说非常繁琐和复杂。

所以 jQuery 提供了一个选择器引擎 —— 后来迭代为 Sizzle,它使得合作开发者可以在 CSS 中,通过名称(例如 div)、ID(例如 #myId)、类别(例如 .my-class)等来选择网页上的元素,用字符串替代函数来查找元素,过滤子元素,相较其它引擎速度更快、文件大小不一更小、易于扩展并且没有倚赖关系。

再者,在纯 JavaScript 合作开发中,合作开发者需要检查应用程序采用何种方式添加事件,然后再做选择,但是 jQuery 提供了隐藏了不同应用程序的 JavaScript 同时实现间的许多不兼容性,可以自行检查应用程序需要什么方式,然后使用适当的方式。

jQuery 已经是时代的眼泪了吗

凭借着这两个优势,jQuery 迅速获得了合作开发者社区和许多大公司的支持。在 2010 年左右,微软和 Google 都在他们的 CDN 网络中为 jQuery 库提供托管;Media Temple 竭尽全力捐助托管 jQuery 中文网站;微软也参与到对 jQuery 的测试和合作开发工作中,Visual Studio 和 ASP.NET MVC 都内置 jQuery;诺基亚参与 jQuery 测试,并雇佣了 jQuery 核心成员 Brandon Aaron;Mozilla 则直接雇佣了 John Resig……

正是这些大公司的支持与采用,使得 jQuery 在最初的几年间非常成功。根据 John Resig 的介绍,jQuery 的合作开发资源全部来自于外部的捐赠。2011 年,jQuery 成立 jQuery 基金会,主要为支持 jQuery 核心,用户界面和移动项目的发展,提供 jQuery 文档和支持和促进 jQuery 社区发展。

“令我高兴的是,世界上显然仍简洁 API 设计的一席之地,正如 jQuery 的持续成功所证明的那样。” 在 jQuery 十周年的时候,John Resig 还对 jQuery 的火爆表达过赞叹,“令人惊讶!jQuery 比以往任何时候都更受欢迎,亚洲地区前 100 万中文网站 77.8% 都在采用它。”

这一比率至今也只是下降了 2.2%,许多公司仍在采用 jQuery。有业内人士分析:“jQuery 在 2016 年之前的普及率非常高,几乎有 90% 以上的市占率,同时也培养了很多以 jQuery 为控制技术起点的合作开发者。2016 年后,虽然 React、Vue 在国内飞速发展,但生态层面依然没有 jQuery 那么完善,许多合作开发者在新兴的 MVVM 架构上找不到的解决方案时,就只能从 jQuery 生态里面寻找,也就出现了许多中文网站在混用的情况。”

那么,在如此高的采用率下,为什么对 jQuery 会正式成为许多公司眼里想要删掉的控制技术债呢?

jQuery 武林话语权不再?

“目前从整个世界范围讲,jQuery 这项控制技术属于被边缘化的存在。” 业内人士指出,从 2006 年第一个版正式发布起,jQuery 迎来了 10 年的黄金期,这种底蕴意味着它很难被瞬间淘汰。但随著 JavaScrpit 本身的成熟和应用程序内核的国际标准化,jQuery 的优势在慢慢淡化……

“我们基本不加入新功能,目前大多数工作都是优化,让 jQuery 变得更快、更强、更容易理解。未来的工作也是优化,使 jQuery 功能更清晰化。”2011 年,jQuery 项目组表达的观点可以说也为 jQuery 后来的命运埋下了注脚。

当 jQuery 开始走向优化路线时,当 jQuery 最初所解决的问题渐渐不再是普遍问题时,必然面临优势不复的情况。回看 jQuery 的两个主战场,简化 DOM 操作和应用程序兼容,都在最近几年有了更优解。

首先,应用程序兼容的问题。在 jQuery 雏形初现的前一年 ——2004,一群来自 Opera、Mozilla、Apple 等不同组织但志同道合的人聚集在一起,组成一个名为WHATWG 的独立规范组,旨在编写一个更好的 HTML 标记规范,用来构建新一代 Web 插件,这个规范组后的成果便是 Web 插件 1.0 规范。而后,W3C 成员多次讨论后,在 2007 年 3 月,重启 HTML 工作,新的 HTML 工作小组做的第一个决定,便是采用Web 插件 1.0 规范,并将其称为 HTML5。

相较此前的 HTML 版,HTML 5 更适合编写动态的插件,并且具有明确定义的解析算法,同时实现大部份 HTML5 的应用程序都将从相同的标记创建相同的 DOM。

但是,HTML5 在刚出现时并不十分完善,外部采用率较低,给了 jQuery 前期喘息成长的机会。

到了 2008 年,第一个 HTML5 草案诞生,同年,IE、Chrome、FireFox、Safari 几大应用程序巨头开始相继支持 HTML5。但这时的 HTML 5 还尚未定稿,同时也受到许多质疑,比如 2012 年 Facebook 应用舍弃 HTML5 部份,改为纯原生植物方式合作开发。HTML5 的国际标准制定者 W3C 和 WHATWG 因为在国际标准制定上的分歧也不再合作,原本一直是 HTML5 坚定后盾的苹果也不再允许纯 Web APP 套壳登录 App Store。

HTML 5 又经历了一段时间的低迷,在此期间,jQuery 依旧是亚洲地区大多数中文网站的心头好。

直到 2014 年 10 月底,历时 8 年,W3C 终于宣布 HTML5 定稿。而后两年,应用程序厂商们纷纷宣布支持 HTML5,各类插件合作开发商们们也陆续采用 HTML5 合作开发产品,HTML5 的许多服务提供商也获得融资。

jQuery 已经是时代的眼泪了吗

伴随著 HTML5 的大范围应用,另一个对 jQuery 造成 “威胁” 的控制技术架构 ——MVVM 普及,使得 jQuery 在 DOM 操作上的优势不复。

由于合作开发者们希望 HTML5 开发的应用可以接近原生植物 App 的效果,便暴露出许多问题,比如大量的 DOM 操作与 DOM API 的频繁调用,操作繁琐,使得代码变得难以维护,网页渲染操控性降低、速度变慢等。即便 jQuery 能简化 DOM 操作,但比不上 MVVM 架构直接跳过了 DOM 操作。

MVVM 架构由 Model、View、ViewModel 三部份构成,Model 层代表统计数据模型,可定义统计数据修改和操作的业务逻辑;View 代表 UI 组件,负责将统计数据模型转化成 UI 展现,ViewModel 则是一个同步 View 和 Model 的对象。View 和 Model 间通过 ViewModel 进行交互,并且二者的同步工作完全自动,不需要合作开发者手动操作 DOM。

由于 MVVM 结构同时实现了统计数据与视图的分离,并通过统计数据来驱动视图,封装 DOM 操作,将统计数据和视图的绑定变成了自动化的操作,进而把 DOM 操作从业务代码中移除,这就导致 jQuery 在很多场景中失去了用武之地。

jQuery 已经是时代的眼泪了吗

MVVM 架构图https://zhuanlan.zhihu.com/p/173551040

符合 MVVM 思维的新一代的前端合作开发架构渐渐崭露头角,组成现在的后端三大架构:

2009 年,AngularJS 架构出现,后被 Google 收购,最为核心的特性主要包括 MVVM、模块化、自动化双向统计数据绑定、语义化标签、倚赖注入等等;

2013 年 5 月,起源于 Facebook、用于构建用户界面的 JavaScript 库 React 开放源码;

2013 年,在 Google 工作的尤雨溪受到 Angular 的启发,发出了一款轻量架构 Seed,同年 12 月更名为 Vue,2014 年 01 月 24,Vue 正式对外正式发布,版号是 0.8.0。

有人形容 jQuery 和新架构的对比:

我让 jQuery 去买瓶酱油,给了他 100 块钱,这时我们需要告诉他去小卖铺的路怎么走、怎么跟老板说买啥酱油,买多少钱的酱油,找多少零钱,还得告诉他怎么回来(命令式)。

这时我让 Vue 去买酱油去了,这时我只需要给他钱,并且告诉他目的地在哪儿,买什么酱油即可,不需要手把手教他(函数式)。

这就是传统合作开发和现代架构合作开发的不同。

https://zhuanlan.zhihu.com/p/49556402

整体而言,随著 UI 交互国际标准的提高,应用程序解析国际标准的国际标准化,jQuery 在新功能上很难超过一众 MVVM 架构。

但 jQuery 目前最大的优势,是相对轻量,只需要面向应用程序,而新架构则需要很多工程化的手段,控制技术门槛比 jQuery 高。而且 jQuery 组件有一定的历史底蕴,涵盖面广,功能相对全面,在生态上也比 MVVM 架构更为成熟。

此外,由于 jQuery 目前仍有着较高的市占率,简单易上手,掌握 jQuery 依旧是许多合作开发者的 “基操”。在对 jQuery 的评价中,有这么一句流传甚广的话:“任何一个程序员,都可以用三天的时间学会 jQuery 的基本用法并投入采用”。再加上合作开发者的控制技术栈更新也存在着许多主观因素,完全推倒早已掌握的控制技术,对大部份、尤其是本来就不擅长后端领域的合作开发者而言很困难。业内人士预测,jQuery 在未来若干年的主要受众群体,依旧会是后端合作开发者,当然这个群体比率会随著新人的急速加入而被慢慢冲淡。

“总体而言,我们今天讨论的并非是 jQuery 的话语权,而更多应该是它存在的意义,对实用者而言,人们更关心 jQuery 能帮他们解决多少问题,话语权早已不再是属于 jQuery 的标签了。”

参考链接:

https://medium.com/mayazine/the-life-and-death-of-jquery-9aca562c80b9

https://www.oschina.net/news/20627/john-resig-talk-about-javascript-and-develop-road

https://www.oschina.net/news/8111/jquery-good-work

https://www.sitepoint.com/interview-john-resig/

https://www.w3.org/wiki/The_history_of_the_Web

https://www.oschina.net/news/64419/html5-rise-up

https://cloud.tencent.com/developer/article/1692480

jQuery 已经是时代的眼泪了吗
上一篇: jquery 简介
jQuery 已经是时代的眼泪了吗
下一篇: jQuery 简介

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务