打开网易新闻 查看更多图片

整理 | 梦依丹

出品 | CSDN(ID:CSDNnews)

诞生于2006年,jQuery是一款深受前端开发者欢迎的跨浏览器JavaScript库,在受w3techs监测的网站中,全球访问流量TOP 10000的网站之中,有77.3%的网站使用了jQuery。

然而,随着JS能力的增强,即使不使用jQuery框架也能实现同样功能。所以,网站还有必要使用jQuery吗?有些网站已经给出了答案。

弃用jQuery

英国政府网站Gov.UK前端主管Matt Hobbs在3月份宣布,该网站上的所有前端应用程序都已经移除了jQuery依赖,在所有13个FE应用程序中,JS大小减少了32KB(或占应用体积的31%~49%),具体也要取决于应用程序。

作为公共网站,精简后的网站可以确保所有人都可以访问,结果显示网站的多项性能数据都有明显提升、即使是在老旧的设备和网速较慢的地方访问,也有了明显提升。下面是Matt Hobbs晒出的一些数据指标变化图:

  • 前后端加载时长变化

打开网易新闻 查看更多图片

  • CPU闲置时长、页面渲染等时长都有明显提升

  • JS大任务前后对比

除了以上数据变化,在JavaScript性能方面,前后对比也有明显变化

  • CPU在大任务的执行时长上,时间由原来的553ms提升到490ms,超大任务执行时长由0.23s提升到了0.21s。

打开网易新闻 查看更多图片

  • CPU UX指标变化情况

  • 极端情况下的数据表现,95%的用户阻塞时间减少了10%。

去掉页面标签后,所有页面的数据变化情况,下面是在75%页面上的前后对比:

打开网易新闻 查看更多图片

  • 在50%(中位数)的页面中仍然可以看到这种改进。

  • 如果在75%的页面中只考察安卓用户,JS长任务的改进为7%。

  • 如果限制在只有50%用户的移动设备上,JS长任务有10%的改善。

其实,关于jQuery过时的讨论由来已久。在2018年的时候,GitHub就宣布从前端代码依赖中去除了jQuery,彼时,GitHub团队就拿JS技术与jQuery进行了对比,结果发现:

  • $(selector) 可以简单地用querySelectorAll()替换;

  • CSS类名切换,可以通过Element.classList实现;

  • CSS现在支持在样式表中定义视觉动画,无需使用JavaScript;

  • $.ajax请求可以用Fetch标准实现;

  • addEventListener()接口已经十分稳定,足以跨平台使用;

  • 可以用一个轻量级的库,来封装事件代理模式;

  • jQuery提供的一些语法糖,已随着JavaScript语言的发展,而变得多余。

网友:jQuery代表过时?

Gov.UK前端弃用jQuery的新闻也在HN上引起了热烈讨论,然而讨论的画风却是由弃用jQuery过渡到了讨论老程序员过时的话题上。

ID为@reggieband用户分享了他的一段职业经历,讲述其在一家游戏公司工作时,有一位灰胡子的传奇人物,每次总能在系统的最后时刻,挤出一点点性能提升。然而随着硬件和编译器的进步,这些技巧开始失效。他最后抛出一个观点,如果某个应聘者在面试时提到自己的jQuery熟练程度时,他会认为这个人已经过时了。

对于reggieband的观点,ID为dlandis进行了反驳:他们只是在时代的年轮上,没有及时更新知识的白胡子们,没有理由把jQuery与他们进行相关联,科技界本身就存在很大的年龄歧视,这种刻板印象的传播,真的不合时宜。

ID是lhorie也表示,对于jQuery的讨论不应该用一种高傲的姿态来吐槽过时的知识。现代框架就像是高级、复杂且不透明的编译器,而灰胡子们对HTML流、前端字体优先级和隐藏类等是如何影响性能的有非常透彻的理解。团队负责人类似于普通训练营的毕业生,知道如何使用当前的框架,但如果走出框架的舒适圈,进入更高级别的讨论,就会感到力不从心。

他认为Gov.UK的用例实际上只是一个例外,因为它实际上考虑了已经很紧凑的代码库的性能,而很多jQuery的废弃工作都是以可维护性、开发人员的生产力或招聘等名义带来的更重的替代方案。但是在对低层次问题的理解和对SDLC管理的关注之间制造一个错误的二分法似乎有点虚情假意。因为它们并不相互排斥。

  • https://twitter.com/TheRealNooshu/status/1509487066941374466

  • https://web.dev/gov-uk-drops-jquery/

  • https://news.ycombinator.com/item?id=31434434

END

☞ 被 Google 劝退,开源开发者:“我将停止开发,不会再回来了!”

成就一亿技术人