jQuery 已经是时代的眼泪了吗(jquery被谁代替了)

出品|开源中国

作为差点一统全球门户网站的前端工具,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 已经是时代的眼泪了吗(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 已经是时代的眼泪了吗(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被谁代替了)

凭借着这两个优势,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 已经是时代的眼泪了吗(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 已经是时代的眼泪了吗(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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2023年4月17日 上午9:59
下一篇 2023年4月17日 上午10:15

相关推荐

  • 横向科研经费管理办法规定(横向科研经费管理办法)

    横向科研经费管理办法横向科研经费管理办法过去20年,全省“一线职工和高级劳动力职工开展了相对少量职工群体的劳动力进补工作,实现人才培养和学历提升目标。现阶段,据统计,少数劳动力职工…

    科研百科 2024年7月30日
    36
  • 执行党费工作中的疑惑和问题

    执行党费工作中的疑惑和问题 党费是党员必须缴纳的一种费用,其目的是支持党的事业,维护党的团结和统一。在执行党费工作中,常常会遇到一些疑惑和问题,下面将对其进行探讨。 1. 党费缴纳…

    科研百科 2024年11月13日
    8
  • 推荐一些热门的 DevOps 工具(最受欢迎的devops工具)

    本文作者使用简单明了的语言介绍了当今使用的一些 DevOps 技术和工具。阅读本文后,您将对这些 DevOps 工具,工作方式、以及如何在软件过程中使用有一个整体的了解。 最近一段…

    科研百科 2022年12月21日
    706
  • 江苏省重点实验室 名录

    江苏省重点实验室名录 江苏省是一个经济繁荣、文化昌盛、科技创新的重要地区。在这里,有许多重点实验室,为江苏省的科技发展做出了巨大贡献。本文将介绍江苏省重点实验室的名录。 一、科技创…

    科研百科 2024年11月10日
    12
  • 用word怎么做宣传彩页

    用Word怎么做宣传彩页 在当今数字化的时代,宣传彩页已经逐渐被人们所抛弃。但是,宣传彩页仍然是一种有效的宣传方式,可以让人们快速了解产品或服务,并促进销售。本文将介绍如何使用Wo…

    科研百科 2024年11月15日
    0
  • 安全管理|浅谈信息安全管理体系建设(在建立信息安全管理体系的过程中)

    信息安全管理体系(ISMS)是组织在整体或特定范围内建立的信息安全方针和目标,以及完成这些目标所用的方法和体系。它是直接管理活动的结果,表示为方针、原则、目标、方法、计划、活动、程…

    科研百科 2022年10月23日
    159
  • 市农牧业科学研究所开展2022年度科研项目中期检查(农牧科技局)

    来源:【巴彦淖尔日报-巴彦淖尔新闻网】 7月5日-6日,市农牧业科学研究所开展2022年度科研项目中期检查考核。 本次检查围绕项目进展情况、服务对象满意度等方面展开检查,实地对市农…

    科研百科 2024年4月18日
    89
  • 「表格」工程施工进度表(施工进度表 表格)

    关注【本头条号】更多关于制度、流程、体系、岗位、模板、方案、工具、案例、故事、图书、文案、报告、技能、职场等内容,弗布克15年积累免费与您分享! 工程名称: 负责人: 序号 施工项…

    科研百科 2022年10月21日
    180
  • 寝室管理系统项目概述

    寝室管理系统项目概述 随着现代社会的不断发展,大学生的生活变得越来越丰富多彩,但是寝室管理却面临着诸多问题。为了解决这些问题,我们开发了寝室管理系统,旨在提高寝室管理的效率和质量。…

    科研百科 2024年12月19日
    0
  • 软件开发报价清单明细文档

    软件开发报价清单明细文档 随着信息技术的飞速发展,软件开发成为了企业数字化转型的重要一环。一份详细的软件开发报价清单明细文档可以帮助企业更好地了解软件开发的成本和进度,从而更好地控…

    科研百科 2024年12月8日
    1