百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

「译」 过去的2021 年,jQuery 过得还好吗?

ccwgpt 2024-10-21 04:07 47 浏览 0 评论

本文来自掘金翻译计划,https://juejin.cn/post/6992036720783360037

通常来说,人们怀旧的对象都是老照片、老歌或者老地方。 而我的怀旧,则是过了这么多年、经历了这么多项目,我仍然在用 jQuery。这个 JavaScript 库于 2006 年问世,其历史比 React、Vue 甚至是 Angular.js 还要悠久。

jQuery 一度曾在 JavaScript 世界里风头无两。有了它,我们开发起动态 Web 应用来更加得心应手。特别是操作 DOM 和发起网络请求时,jQuery 的使用方式更加直观明了。

那么现在这款经典的 JavaScript 库状况如何?它有什么更新?谁仍在使用它?它的人气是高是低?下文会给你答案。

那么,jQuery 有什么更新吗?

我做了一番功课:我翻到了 2016 年的 jQuery 官方博客,去看看都有什么更新记录在案。

答案是:实话实说,几乎纹丝没动。确实,jQuery 3 带来了许多更新,但其中没有一个是值得一提的。没有一个更新能与前几年 React.js 引入 Hooks 那样的里程碑相提并论。

还有一些次要的更新,是支持了在 jQuery 对象上使用 for-of 循环。而在内部实现中,jQuery 现在还使用了 requestAnimationFrame() 来运行动画。

除此之外,就再也没有重大更新了。原因很简单:jQuery 早已经进化到了充分够用的程度了。

还有公司在用 jQuery 吗?

说起技术选型,行业大厂们总是起着引领潮流的重要作用。一旦那些有话语权的开发者团队选用了某项技术,就会给该技术带来很大的优先选择权重。即使 jQuery 在逐渐走向没落,但它在 Web 领域仍然是举足轻重的角色。

Wappalyzer 的分析报告显示,在所有的使用了 JavaScript 库的网站中,jQuery 仍然占据着超过 34% 之大的比例。

当然了,这份数据我们看看就好 —— 我们并不能仅凭着有成千上万的网站仍在使用 jQuery 这一点,就武断地认为它一定是合适的选择。另外,jQuery 也成为了其他库的必要依赖。

Bootstrap 就是 jQuery 的用武之地之一。此前,这个 CSS 框架一直在使用 jQuery 进行所有的 DOM 操作。直到 Bootstrap 5,jQuery 才被停用了。

现在我们来看看 jQuery 在各个公司中的使用情况:在互联网上,我发现许多公司都声称在使用 jQuery。然而,技术栈在持续更新,我们要弄明白的是,jQuery 到底是在什么地方被用到的。

事实上,Stack Overflow 仍在使用 jQuery。使用 jQuery 的公司还包括:

  • Wellsfargo.com
  • Microsoft.com
  • Salesforce.com

没错,即使是 Microsoft 也是其中一员。但就算是这样,这些公司的技术栈也不具有完全的参考价值。即使是这样的大厂,他们的网站开发人员也有可能误引用了不必要的库,或者没时间去优化。

如果 jQuery 死了,原因也不是我们所想的那样

我不喜欢用「死」来形容技术。毕竟,技术行业又不是医院,抢救无效就宣告死亡。但你确实得承认,jQuery 已经远不如以前流行,特别是最近五年里:

但原因是什么呢?很多人也许会认为,是因为像 React、Vue 以及 Angular 这样的框架和库大行其道。但这确实不是真正原因。那些流行的框架和 jQuery 走的路线完全不同。没错,它们都是致力于让 Web 应用的开发更加便捷的。但是,二者之间确实有着极大的差异。

那些框架走的都是组件化、数据绑定、状态管理以及单页面应用的路线。而 jQuery 呢,则像是纯 JavaScript 的一种方言,在下面的例子中你就会有切实体会:

let el = document.getElementById('contents'); 

// jQuery 方式:
let el = $('#contents');
复制代码

就算是 React、Vue 或 Angular 这类框架,也不是处处都适用。在那些无需重型框架就能开发出来的网站中,jQuery 仍然可以是非常得力的助手。

杀死 jQuery 的不是框架。

杀死 jQuery 的,是 JavaScript 本身。

单单 document.querySelector() 这一个函数,就让 jQuery 的众多拥趸倒戈投奔原生 JavaScript。(我自己也是因为 $() 这个非常实用的语法而经常使用 jQuery。)

JavaScript 的进化,让访问 DOM 变得更加容易。即使是 jQuery 的拿手好戏 —— 网络请求,在 JavaScript 中也愈发直观易用。

也许是我们错误估量了 jQuery 对性能的影响

毋庸置疑,各种库对于网站性能的影响不总是正向的。特别是当库的体积很大的时候,网站的加载时间也被延长了。但 jQuery 只有 30 kb,也谈不上笨重。我们可以拿 Vue、React.js 和 Angular 压缩后的 npm 包来做个对比:

  • vue:22 kb
  • react-dom + react:41 kb
  • angular:62 kb

注意:这还只是框架包的体积。整个应用的生产包还要更大!所以在加载时间这个方面,jQuery 的表现十分优秀。

那渲染(Render)性能方面呢?

大型框架们总喜欢争夺最佳性能的王冠。基准测试的内容通常总是大型表格的渲染,或者瞬时上千次状态更新。在这类实验中,各个框架已经拉开了距离 —— 而原生 JavaScript 则是妥妥地完虐了它们。

但说实话,这些基准测试通常没有太大意义。特别是对于那些称不上是「应用」的网站,它们只是用来展示内容的,库的渲染性能只是空谈。用户根本不会注意到一个下拉列表使用了一个「渲染缓慢」的库。

结语

我并不认同继续使用 jQuery 是个错误。这个库在许多场景中仍然是非常有帮助的,特别是当你能精通它的时候。当然了,现代 JavaScript 也值得你给个机会尝试尝试。

如果你想把 Web 应用的性能优化到极致,那 jQuery 爱莫能助。你完全可以省下这 30 kb 的代码体积,用纯 JavaScript 实现一切,而不必担心会缺少诸如可复用组件或者 MVVM 等这类「哲学色彩」。

jQuery 从始至终都更适合那些重内容而非功能的网站。而在更复杂的 Web 应用中,React 之辈的组件化哲学则是个很好的切入点。

感谢阅读!

相关推荐

十分钟让你学会LNMP架构负载均衡(impala负载均衡)

业务架构、应用架构、数据架构和技术架构一、几个基本概念1、pv值pv值(pageviews):页面的浏览量概念:一个网站的所有页面,在一天内,被浏览的总次数。(大型网站通常是上千万的级别)2、u...

AGV仓储机器人调度系统架构(agv物流机器人)

系统架构层次划分采用分层模块化设计,分为以下五层:1.1用户接口层功能:提供人机交互界面(Web/桌面端),支持任务下发、实时监控、数据可视化和报警管理。模块:任务管理面板:接收订单(如拣货、...

远程热部署在美团的落地实践(远程热点是什么意思)

Sonic是美团内部研发设计的一款用于热部署的IDEA插件,本文其实现原理及落地的一些技术细节。在阅读本文之前,建议大家先熟悉一下Spring源码、SpringMVC源码、SpringBoot...

springboot搭建xxl-job(分布式任务调度系统)

一、部署xxl-job服务端下载xxl-job源码:https://gitee.com/xuxueli0323/xxl-job二、导入项目、创建xxl_job数据库、修改配置文件为自己的数据库三、启动...

大模型:使用vLLM和Ray分布式部署推理应用

一、vLLM:面向大模型的高效推理框架1.核心特点专为推理优化:专注于大模型(如GPT-3、LLaMA)的高吞吐量、低延迟推理。关键技术:PagedAttention:类似操作系统内存分页管理,将K...

国产开源之光【分布式工作流调度系统】:DolphinScheduler

DolphinScheduler是一个开源的分布式工作流调度系统,旨在帮助用户以可靠、高效和可扩展的方式管理和调度大规模的数据处理工作流。它支持以图形化方式定义和管理工作流,提供了丰富的调度功能和监控...

简单可靠高效的分布式任务队列系统

#记录我的2024#大家好,又见面了,我是GitHub精选君!背景介绍在系统访问量逐渐增大,高并发、分布式系统成为了企业技术架构升级的必由之路。在这样的背景下,异步任务队列扮演着至关重要的角色,...

虚拟服务器之间如何分布式运行?(虚拟服务器部署)

  在云计算和虚拟化技术快速发展的今天,传统“单机单任务”的服务器架构早已难以满足现代业务对高并发、高可用、弹性伸缩和容错容灾的严苛要求。分布式系统应运而生,并成为支撑各类互联网平台、企业信息系统和A...

一文掌握 XXL-Job 的 6 大核心组件

XXL-Job是一个分布式任务调度平台,其核心组件主要包括以下部分,各组件相互协作实现高效的任务调度与管理:1.调度注册中心(RegistryCenter)作用:负责管理调度器(Schedule...

京东大佬问我,SpringBoot中如何做延迟队列?单机与分布式如何做?

京东大佬问我,SpringBoot中如何做延迟队列?单机如何做?分布式如何做呢?并给出案例与代码分析。嗯,用户问的是在SpringBoot中如何实现延迟队列,单机和分布式环境下分别怎么做。这个问题其实...

企业级项目组件选型(一)分布式任务调度平台

官网地址:https://www.xuxueli.com/xxl-job/能力介绍架构图安全性为提升系统安全性,调度中心和执行器进行安全性校验,双方AccessToken匹配才允许通讯;调度中心和执...

python多进程的分布式任务调度应用场景及示例

多进程的分布式任务调度可以应用于以下场景:分布式爬虫:importmultiprocessingimportrequestsdefcrawl(url):response=re...

SpringBoot整合ElasticJob实现分布式任务调度

介绍ElasticJob是面向互联网生态和海量任务的分布式调度解决方案,由两个相互独立的子项目ElasticJob-Lite和ElasticJob-Cloud组成。它通过弹性调度、资源管控、...

分布式可视化 DAG 任务调度系统 Taier 的整体流程分析

Taier作为袋鼠云的开源项目之一,是一个分布式可视化的DAG任务调度系统。旨在降低ETL开发成本,提高大数据平台稳定性,让大数据开发人员可以在Taier直接进行业务逻辑的开发,而不用关...

SpringBoot任务调度:@Scheduled与TaskExecutor全面解析

一、任务调度基础概念1.1什么是任务调度任务调度是指按照预定的时间计划或特定条件自动执行任务的过程。在现代应用开发中,任务调度扮演着至关重要的角色,它使得开发者能够自动化处理周期性任务、定时任务和异...

取消回复欢迎 发表评论: