Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >为什么越来越少的人用 jQuery?

为什么越来越少的人用 jQuery?

作者头像
grain先森
发布于 2019-03-29 02:32:58
发布于 2019-03-29 02:32:58
9730
举报
文章被收录于专栏:grain先森grain先森

最早期的开发,大多都使用jQuery,它给我们带来了很多的便利:快速选取元素,方便操作DOM元素的API,各个浏览器之间完美的兼容性,链式操作,动画、ajax等等都是jQuery为前端开发人员来带的好处。为什么现在越来越少人用了呢?我来分以下几点,阐述我的想法:

一、JS更新带来的冲击:

1.快速选取DOM节点

对于大部分使用jQuery的开发工程师来说,能够快速选取DOM节点,这个无疑是一个重要的原因,但是就目前情况来说,这个优势显然已经荡然无存了,为什么呢?跟大家说两个API,这两个API已经非常多的人在用了,就是document.querySelector和document.querySelectorAll方法。这两个方法可以通过传入css选择器形式的字符串,就可以匹配到预期的DOM节点。以下是目前两个API的兼容情况:

从图中可以看到,这两个API已经很好的兼容各个浏览器。

Vue中也是使用此API进行元素获取的:

所以说jQuery快速选择DOM节点的优势已经不存在了。

2.方便操作DOM元素的API

可以方便操作DOM元素的API,比如addClass 、removeClass 、toggleClass。现在原生JS也得到了支持,这个API叫做classList。

虽然说IE兼容的不太完美,但是最基本该实现也都实现了。

3.动画

现在CSS3动画技术已经非常的成熟,已经完全可以取代jQuery做的动画,而且还能比jQuery的animate方法实现更复杂的动画,兼容性好,性能消耗小,何乐而不为呢?举个例子吧,比方说如果实现背景颜色过度,CSS3可以完美的实现,但是jQuery就不行。并且现在已经出现了很多优秀的CSS3动画库,大名鼎鼎的Animate.css库大家肯定都有耳闻吧。

4.Ajax操作

jQuery的ajax操作,为我们省去了兼容浏览器方面的问题,并且也提供了简明的API去调用get和post,让开发者从繁琐的兼容性与使用原生API上解脱出来。但是现在,这个优势也已经非常微小了。不管是原生JS的Fetch API还是axios。都为我们提供了强大的ajax使用能力,并且axios还有拦截器这个优势。这时相较而言,jQuery的ajax确实已经无法相比了。

当然Fetch在IE上来说,肯定是没法用的

但是已经有了Fetch的Polyfill方案:github/fetch

这样只需要引用这一个小小的JS,就可以使用方便的ajax了。相较于jQuery,那是小巧很多的。

二、性能问题:

在原来的开发中,工程师们不会太纠结于性能问题。但是现在不同了,为了提高用户体验,首要的就是解决浏览器绘制所带了的性能问题。最经典的莫过重绘和回流这两个概念。

重绘:就是页面重新进行绘制,比方说,修改一个元素的背景颜色。

回流:一般来说,浏览器进入页面的时候就已经进行了一次回流,回流其实指的就是页面重新进行排版布局。

既然我们想提高性能,那么就可以先从这两概念入手,肯定是以最小的代价更新页面是提高性能最好的手段。但可惜的是,jQuery并没有做到。为什么这么说,请看以下分析:

当我们拿到一组新闻数据要渲染到ul标签里时,通常我们会先将新闻数据逐条进行字符串拼接,紧接着使用$符选择ul元素,并修改ul的innerHTML的值为拼接好的字符串(使用html API),此时完成了第一次渲染。这次页面进行了重绘(这时必然的),首先不分析第一次的性能好或坏,用下一个说明将更加有力。

比如说我们这时多了一个换一换按钮。在传统开发模式中,这时的换一换按钮肯定执行的还是上面的代码,获取元素,修改元素的innerHTML,但是现在问题出现了,就是我们有必要将所有元素重新删除,再重新添加一遍吗?答案肯定是不需要(下图所示,创建一个元素的代价有多大)。

因为这时我们只需要将每一个li里的文字和a标签里的链接修改即可,那显然是没有必要像上面那样重新再添加一遍li的。因为一个DOM元素,可能包含上百条属性,这对性能开销是很大的。

那么现在出现的新概念 Virtual DOM(虚拟DOM),就可以解决这个问题。其实Virtual DOM就是对真实DOM节点的描述,通过改变Virtual DOM来以最小变动来改变真实DOM(Virtual DOM不一定真的比jQuery性能更好)。

尤雨溪:网上都说操作真实 DOM 慢,但测试结果却比 React 更快,为什么?

三、现代框架对jQuery的影响:

现在国内比较火的React 、Vue 、Angular框架,都是属于MV*框架的范畴,其设计特点,主要是以数据为核心。可以说操作DOM的事儿,就留给框架去做了。这比传统jQuery开发效率高,代码可维护性高,可扩展性强、性能好。

打个比方:

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

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

这就是传统开发和现代框架开发的不同。

使用现代框架开发,可以使用Webpack(当然使用jQuery也可以使用Webpack),可以使用人家提供的现成的脚手架,比方说create-react-app,vue-cli。极大提高了开发的效率,并且可以使用最新的ES6、ES7语法进行开发,在编码体验上,就提高了一个档次。

谢谢各位小伙伴的阅读,嘿嘿。

作者:Lemonade https://zhuanlan.zhihu.com/p/49556402

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019.01.08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
为什么越来越少的人用 jQuery?
最早期的开发,大多都使用jQuery,它给我们带来了很多的便利:快速选取元素,方便操作DOM元素的API,各个浏览器之间完美的兼容性,链式操作,动画、ajax等等都是jQuery为前端开发人员来带的好处。为什么现在越来越少人用了呢?我来分以下几点,阐述我的想法:
Java帮帮
2019/03/07
1.3K0
为什么越来越少的人用 jQuery?
JQuery逐渐退出前端历史舞台?
现在各大技术论坛经常有类似的问题出现,PHP是否过时了,JQuery是否已经被淘汰?前段时间GitHub宣布改版,并且放弃了JQuery依赖,而且发布文章详细的解释了为什么放弃JQuery。这里贴下GitHub英文原版文章:
创译科技
2019/07/01
1.5K0
jQuery 落幕了!
点击关注公众号,Java干货及时送达 出品 | OSC开源社区(ID:oschina2013) 作为差点一统全球门户网站的前端工具,jQuery 曾在 Web 2.0 初兴之时风头无两,然而随着前端技术的不断演进与浏览器底层标准的统一,jQuery 却逐渐成为一些网站眼中的 “技术债”。  日前,英国政府网站 GOV.UK 删除其网站上所有前端应用程序依赖项 jQuery。删除之后,13 个前端应用程序 JavaScript 大小减少了 32 KB(或 31% 到 49%)之间,其他多项性能提升,团队
Java技术栈
2022/06/06
5540
jQuery 落幕了!
21道关于性能优化的面试题(附答案)
性能优化部分的面试题主要考察应试者对网站性能优化的了解。如何做好性能优化,哪些操作会引起性能优化的问题,性能优化指标是什么等,都值得应试者关注。
winty
2021/03/25
1.9K0
给前端新人看的前端之路漫谈
前言 前端之路何其漫漫~ 说明:本篇文章原是写给学弟学妹的,但想来花的功夫确实不少,就把此篇文章当做自己的一个阶段性总结文章了,会保持长期更新。 HTML 总的来说HTML并不难,甚至可以说很无脑……HTML的标签个人觉得过一遍就得,知道什么时候该用什么标签就可以了,因为在以后的开发中打交道最多的就是各种各样的标签,想不熟都难。就像现在我写这篇文章用的Markdown一样,只是几个标签的反复应用。那么html的学习就相对来说很自由了,可以跟着w3schoolW3school网址过一遍标签,网上也有很多其它网
用户1667431
2018/04/18
1.2K0
H5 APP开发中的性能优化
H5 APP的性能优化是提升用户体验的关键,尤其是在移动端,性能问题会直接影响用户留存率。以下是H5 APP开发中常见的性能优化策略。
数字孪生开发者
2025/02/25
1830
H5 APP开发中的性能优化
前端框架 jQuery 和 Vue 如何选择?
不会前端开发的后端不是一个好的后端开发,平时写点小项目可以用得上,先简单了解一下前端这个概念。
良月柒
2019/09/29
9.4K1
前端框架 jQuery 和 Vue 如何选择?
重绘与回流_html回流重绘
浏览器在渲染一个页面时,会将页面分为很多个图层,图层有大有小,每个图层上有一个或多个节点。 也就是我们各种各样的Dom标签
全栈程序员站长
2022/11/01
1.5K0
重绘与回流_html回流重绘
前端面试手册
分别从HTML、CSS、JavaScript、综合四个方面总结,后续持续更新 ---- HTML部分 ---- Doctype的作用? 文档声明,不存在或格式不正确会导致文档以兼容模式呈现 标准模式的排版和JS运作模式都是以该浏览器支持的最高标准运行 兼容模式页面以宽松的向后兼容的方式显示 HTML5不基于SGML,因此不需要对DTD进行引用 行内、块级、 空(void)元素 行内:a b span img input select strong 块级:div ul ol li dl dt dd h
小古哥
2018/12/28
1.3K0
漫谈前端之路
前言 前端之路何其漫漫~ 说明:本篇文章原是写给学弟学妹的,但想来花的功夫确实不少,就把此篇文章当做自己的一个阶段性总结文章了,会保持长期更新。 HTML 总的来说HTML并不难,甚至可以说很无脑……HTML的标签个人觉得过一遍就得,知道什么时候该用什么标签就可以了,因为在以后的开发中打交道最多的就是各种各样的标签,想不熟都难。就像现在我写这篇文章用的Markdown一样,只是几个标签的反复应用。那么html的学习就相对来说很自由了,可以跟着w3schoolW3school网址过一遍标签,网
用户1667431
2018/04/18
1.2K0
前端性能优化的例子
● CSS样式表置于头部导入,在渲染DOM-TREE的时候预先请求样式资源,让页面渲染速度加快
星辰大海c
2023/11/25
3520
前端面试题大全_最新前端面试题
今天给朋友们分享我花了将近一个月时间,参考了很多网上的优质博文和项目整理的一份比较全面的前端面试题集,还有面试前刷过的题目(其中概括HTML,CSS,JS,React,Vue,NodeJS,互联网基础知识)共有【269页】。很多朋友靠着这些内容进行复习,拿到了BATJ等大厂的offer, 也已经帮助了很多的前端学习者,希望也能帮助到你。
全栈程序员站长
2022/09/27
5440
前端面试题大全_最新前端面试题
都9102年了,还需要用到 jQuery 吗?[每日前端夜话0xB4]
关于 jQuery 这个流行的 JavaScript 库如何死亡的问题一直在不断的被讨论。
疯狂的技术宅
2019/08/30
2.3K0
都9102年了,还需要用到 jQuery 吗?[每日前端夜话0xB4]
我工作中用到的性能优化全面指南
在构建过程中,为了减少文件的大小和加载时间,通常会对JavaScript代码进行最小化和压缩处理。这包括移除不必要的空格、换行、注释,以及缩短变量和函数名。工具如UglifyJS和Terser等可以帮助我们完成这个任务。
linwu
2023/07/26
3630
CSS3动画性能优化集
在浏览器开始渲染页面,或者长时间执行某个 JS 时,主线程会一直在忙碌状态,此时对于用户的任何输入或是操作都不会有所响应。
2Broear
2024/03/12
2210
jQuery已“死”?为清除技术债,我们删掉了前端所有jQuery依赖
近期,英国公共部门信息网站 GOV.UK 前端开发主管 Matt Hobbs 宣布该公司删除了 jQuery 作为所有前端应用程序的依赖项,这意味着“在所有 13 个 FE 应用程序中,JS 大小减少了 32 KB(31% ~49% 之间)”。
深度学习与Python
2022/06/13
8730
jQuery已“死”?为清除技术债,我们删掉了前端所有jQuery依赖
回顾我眼里的前端十年
一晃时间过得真快,不知不觉已经毕业10年了,这十年虽然我一直在从事着后台的开发,但是也接触和从事过前端的开发工作,那么接下来就让我回顾下我眼里的前端十年。
程序那些事儿
2023/03/07
4630
回顾我眼里的前端十年
分享 | 前端性能优化(CSS动画篇)
最近拜读了一下html5rocks上几位大神写的一篇关于CSS3动画性能优化的文章,学到了很多,在这里记录一下,其中的知识都是来源于这俩篇文章,我只是截取了其中比较关注的内容出来,原文地址High Performance Animations及Accelerated Rendering in Chrome
疯狂的技术宅
2019/03/28
2K0
前端与移动开发学习大纲
前端与移动开发基础大纲所处阶段主要内容技术要点学习目标第一阶段: HTML5 + CSS3HTML51、 浏览器与浏览器内核2、语法及使用、3、 常用标签4. 语义化5、 表单元素6、 HTML 、7 新增标签可掌握的核心能力: 掌握 HTML5 常用标签; 掌握 CSS 语法及使用技巧; 掌握CSS3新增选择器; 掌握CSS3新增样式属性; 掌握 DIV+CSS 布局方式; 掌握常见网页布局技巧; 掌握企业级、电商级网页开发基本的流程、规范; 掌握语义化、模块化、兼容性的PC端网页开发; 掌握 Pho
小唐同学.
2022/02/28
2.4K0
前端实习面经(回馈牛客网)
春招结束了,最终收到了心仪的offer,由于楼主比较水所以面试的问题也比较基础,发出来给各位同学做个基础篇参考 美团(上海现场面) 一面 自我介绍 说一下浏览器从输入URL到渲染完页面的整个过程 JS
牛客网
2018/06/19
1.2K0
相关推荐
为什么越来越少的人用 jQuery?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档