Jquery为什么越来越多的人选择逃离?
摘要:大多数最早的开发都使用了jQuery,它为我们带来了很多便利:快速选择元素,轻松访问DOM元素的API,浏览器之间的完美兼容性,链操作,动画,ajax等。两者都是jQuery的优点 前端开发人员。
大多数最早的开发都使用了jQuery,它为我们带来了很多便利:快速选择元素,轻松访问DOM元素的API,浏览器之间的完美兼容性,链操作,动画,ajax等。两者都是jQuery的优点 前端开发人员。 为什么现在使用它的人越来越少? 让我分清以下几点并解释我的想法:
一,现代框架对jQuery的影响:
如今,国内的React,Vue和Angular框架都在MV *框架的范围内。 设计特征主要基于数据。 可以说DOM的操作留给了框架。 这比传统的jQuery开发更有效,具有高代码可维护性,可伸缩性和性能。
例如:
我让jQuery买了一瓶酱油给了他100元。 这时候,我们需要告诉他怎么去小店,怎么告诉老板买酱油,买多少酱油,找多少变化,还是要告诉他怎么回来 (命令)。
这时,我让Vue去买酱油。 这时,我只需要给他钱,并告诉他目的地在哪里,买什么酱油,而不需要教他(功能)。
这是传统发展与现代框架发展之间的差异。
使用现代框架开发,您可以使用Webpack(当然使用jQuery或Webpack),您可以使用其他人提供的现成脚手架,例如create-react-app,vue-cli。 大大提高了开发效率,并且可以使用最新的ES6,ES7语法进行开发,在编码体验方面,它提升了一个档次。
现在jQuery完全退出了历史舞台,他已经完成了他必须完成的任务。
二,性能问题:
在最初的开发中,工程师们并没有过多地纠缠于性能问题。 但现在情况有所不同。 为了改进用户的实施例,首先要解决浏览器绘图带来的性能问题。 最经典的是重绘和回流的概念。
重绘:重绘页面,例如,修改元素的背景颜色。
回流:通常,浏览器在进入页面时已经执行了重排。 Reflow实际上是指页面的重新布局。
由于我们希望提高性能,我们可以从这两个概念开始,并且确保以最低成本更新页面是提高性能的最佳方法。 但不幸的是,jQuery没有。 为什么这么说,请看以下分析:
当我们得到一组要呈现到ul标签中的新闻数据时,我们通常首先将新闻数据逐个连接起来,然后使用$ character选择ul元素,并将ul的innerHTML的值修改为stitched 字符。 字符串(使用html API)完成此时的第一次渲染。 这个页面已被重绘(此时不可避免),首先,不要分析第一次表现的好坏,接下来的描述会更加强大。
例如,我们此时还有一个更改按钮。 在传统的开发模式中,此时的更改按钮仍然必须执行上面的代码,获取元素,修改元素的innerHTML,但现在出现问题,是否有必要再次删除所有元素,然后添加它 再次? ? 绝对不需要答案(如下图所示,创建元素的成本有多高)。
li节点上的所有属性
因为此时我们只需要修改每个li中的文本和a标签中的链接,显然没有必要像上面那样重新添加li。 由于DOM元素,它可能包含数百个属性,这是一个很大的性能开销。
然后新概念Virtual DOM(虚拟DOM)可以解决这个问题。 实际上,Virtual DOM是对真实DOM节点的描述。 通过更改Virtual DOM以最小的更改来更改真正的DOM(Virtual DOM不一定比jQuery性能更好)。
尤玉玺:网上说真正的DOM很慢,但测试结果比React快,为什么呢?
第三,JS更新的影响:
1.快速选择DOM节点
对于大多数使用jQuery的开发工程师来说,快速选择DOM节点的能力无疑是一个重要原因,但在目前的情况下,这种优势显然已经消失,为什么呢? 我们来谈谈两个API。 这两个API已经被很多人使用,即document.querySelector和document.querySelectorAll方法。 通过以css选择器的形式传入字符串,可以将这两个方法与预期的DOM节点进行匹配。 以下是两个API的当前兼容性:
querySelector兼容性
querySelectorAll兼容图
从图中可以看出,这两个API与每个浏览器都很兼容。
此API还用于Vue中的元素检索:
因此,jQuery快速选择DOM节点的优势已不复存在。
2.易于操作的DOM元素API
可以轻松操作DOM元素的API,例如addClass,removeClass和toggleClass。 现在也支持原生JS。 此API称为classList。
尽管IE兼容性并不完美,但也实现了最基本的实现。
3.动画
现在CSS3动画技术非常成熟,它可以完全取代jQuery制作的动画,并且可以实现比jQuery的动画方法更复杂的动画,兼容性好,性能消耗小,为什么不呢? 例如,如果你获得过多的背景颜色,CSS3可以完美实现,但jQuery将无法正常工作。 现在已经有很多优秀的CSS3动画库,必须听到着名的Animate.css库。
当前的CSS3动画兼容性
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相比,它要小得多。
上一篇:JavaScript 不容错过的八大优化建议,来自Google Chrome 工程师
下一篇:2019前端热门技术汇总整理
人机验证(Captcha)绕过方法:使用Chrome开发者工具在目标网站登录页面上执行简单的元素编辑,以实现Captcha绕过
牛创网络: " 人机身份验证(Captcha)通常显示在网站的注册,登录名和密码重置页面上。 以下是目标网站在登录页面中排列的验证码机制。 从上图可以
2020-01-26 12:44:09 )8873( 亮了
自动发现IDOR(越权)漏洞的方法:使用BurpSuite中的Autozie和Autorepeater插件来检测和识别IDOR漏洞,而无需手动更改每个请求的参数
牛创网络: "自动发现IDOR(越权)漏洞的方法:使用BurpSuite中的Autozie和Autorepeater插件来检测和识别IDOR漏洞,而无需手动更改每个请求的参数
2020-01-30 14:04:47 )6288( 亮了
Grafana CVE-2020-13379漏洞分析:重定向和URL参数注入漏洞的综合利用可以在任何Grafana产品实例中实现未经授权的服务器端请求伪造攻击SSRF
牛创网络: "在Grafana产品实例中,综合利用重定向和URL参数注入漏洞可以实现未经授权的服务器端请求伪造攻击(SSRF)。该漏洞影响Grafana 3 0 1至7 0 1版本。
2020-08-12 14:26:44 )4301( 亮了
Nginx反向代理配置及反向代理泛目录,目录,全站方法
牛创网络: "使用nginx代理dan(sui)是http响应消息写入服务地址或Web绝对路径的情况。 写一个死的服务地址是很少见的,但它偶尔也会发生。 最棘手的是写入web绝对路径,特别是如果绝对路径没有公共前缀
2019-06-17 10:08:58 )3858( 亮了
fortify sca自定义代码安全扫描工具扫描规则(源代码编写、规则定义和扫描结果展示)
牛创网络: "一般安全问题(例如代码注入漏洞),当前fortify sca规则具有很多误报,可通过规则优化来减少误报。自带的扫描规则不能检测到这些问题。 需要自定义扫描规则,合规性角度展示安全风险。
2020-02-12 10:49:07 )3505( 亮了
整理几款2020年流行的漏洞扫描工具
牛创网络: "漏洞扫描器就是确保可以及时准确地检测信息平台基础架构的安全性,确保业务的平稳发展,业务的高效快速发展以及公司,企业和国家 地区的所有信息资产的维护安全。
2020-08-05 14:36:26 )2536( 亮了
微擎安装使用技巧-微擎安装的时候页面显示空白是怎么回事?
牛创网络: "我们在公众号开发中,有时候会用到微擎,那我们来看一下微擎安装的时候页面显示空白是怎么回事吧
2019-06-08 15:34:16 )2261( 亮了
渗透测试:利用前端断点拦截和JS脚本替换对前端加密数据的修改
牛创网络: " 本文介绍的两种方法,虽然断点调试比JS脚本代码替换更容易,但是JS脚本代码替换方法可以实现更强大的功能,测试人员可以根据实际需要选择适当的测试方法
2020-01-07 09:34:42 )1995( 亮了
从工业界到学界盘点SAS与R优缺点比较
牛创网络: "虽然它在业界仍然由SAS主导,但R在学术界广泛使用,因为它的免费开源属性允许用户编写和共享他们自己的应用程序 然而,由于缺乏SAS经验,许多获得数据分析学位的学生很难找到工作。
2019-07-13 22:25:29 )1842( 亮了
41款APP侵犯用户隐私权:QQ,小米,搜狐,新浪,人人均被通报
牛创网络: "随着互联网的不断发展,我们进入了一个时代,每个人都离不开手机。 但是,APP越来越侵犯了用户隐私权。12月19日,工业和信息化部发布了《关于侵犯用户权益的APP(第一批)》的通知。
2019-12-20 11:28:14 )1775( 亮了