当前位置:首页 > 科技  > 软件

JavaScript,是时候瘦瘦身了!

来源: 责编: 时间:2023-10-20 10:02:43 273观看
导读作者 | Loraine Lawson编译 | 言征“JavaScript太重了。”虽然JS在全球开发语言中属于巨无霸的存在,但从过去到现在,吐槽JS的声音一直不绝于耳。比如,要系统的学JavaScript,有一大套工具链,而且是非官方的工具链。许多新手

作者 | Loraine Lawsonn6M28资讯网——每日最新资讯28at.com

编译 | 言征n6M28资讯网——每日最新资讯28at.com

“JavaScript太重了。”虽然JS在全球开发语言中属于巨无霸的存在,但从过去到现在,吐槽JS的声音一直不绝于耳。n6M28资讯网——每日最新资讯28at.com

比如,要系统的学JavaScript,有一大套工具链,而且是非官方的工具链。许多新手一看到VS Code,NodeJS,Babel,Webpack,Jest,Gulp, TypeScript...顿时就被劝退。n6M28资讯网——每日最新资讯28at.com

再比如,语法特性也是乱成一团。弱类型,又可以面向对象,又可以函数式编程,还可以面向过程,还有this关键字,这些全部混着用。谁也不想接受这样的屎山代码!n6M28资讯网——每日最新资讯28at.com

就连Solid.js框架的创建者Ryan Carniato,也在近日发声:是时候在Web中减少JS代码了! n6M28资讯网——每日最新资讯28at.com

一、采用 0 Kb JavaScript?做不到!

Carniato目前在Web开发平台Netlify任职,近期他在“International JavaScript”会议的主题演讲中向前端开发人员提出了一个问题:“你未来会采用 0kb JavaScript 吗?”n6M28资讯网——每日最新资讯28at.com

当然,Carniato提出的这个问题更多是是一个假设性问题,因为 0kb 并不是真正的目标。更重要的是前端需要减少其JavaScript的占用空间。n6M28资讯网——每日最新资讯28at.com

“如果我们回顾过去和现在,就会发现关于降低 JavaScript 成本的讨论一直在进行,而且证据充分确凿。”n6M28资讯网——每日最新资讯28at.com

首先,他给开发人员展示了一组统计图数据,图中显示了按内容类型划分的网页权重的中位数,很明显,除了意料之中的图片之外,让网页变得十分“沉重”的罪魁祸首便是JavaScript。n6M28资讯网——每日最新资讯28at.com

按内容类型划分的页面权重显示了 JavaScript 在增加页面重量方面的影响。按内容类型划分的页面权重显示了 JavaScript 在增加页面重量方面的影响。n6M28资讯网——每日最新资讯28at.com

如何让网页变轻?“首先,如何优化图像是众所周知的,但 JavaScript 有点棘手,而且它恰好是所提供的最昂贵的资产之一,”他说。n6M28资讯网——每日最新资讯28at.com

同时,Carniato指出,这种情况在移动设备上则是一个更大的问题,根据设备和网络的不同,要代价可能“非常高”。n6M28资讯网——每日最新资讯28at.com

他展示了一个 JavaScript 大小为 170 KB 的示例。JavaScript的处理时间要比图像更“漫长”。n6M28资讯网——每日最新资讯28at.com

“在一台低端设备上,处理时间,即解析、执行、运行 JavaScript 代码的时间,几乎是3秒半,而图像大约是 100 毫秒左右。”n6M28资讯网——每日最新资讯28at.com

不同高端低端设备的多核跑分不同高端低端设备的多核跑分n6M28资讯网——每日最新资讯28at.com

而且,高端设备和低端设备之间处理能力的差异,也存在越来越明显的差距。2022 年的低端设备市场在处理能力方面与 2014 年的高级设备类似,因此 iPhone 6s 本质上就像拥有 Moto E 30。n6M28资讯网——每日最新资讯28at.com

这里,Carniato提到了尤其会对电商公司 eBay 造成不小的影响,因为在电子商务领域,页面加载至关重要。n6M28资讯网——每日最新资讯28at.com

“加载时间和购买率之间存在相关性,这已经不是什么秘密了,”他说。“问题的真相在于水合(Hydration),而大型 JavaScript 有效负载也是我们架构责任的一部分。”n6M28资讯网——每日最新资讯28at.com

名词解释:1.水合作用的实质是水分子整体进入矿物晶格,从而使矿物体积增大的作用。这里是指 Web开发中的一种交互性技术。n6M28资讯网——每日最新资讯28at.com

在web开发中,水合(Hydration)是一种为服务器渲染的HTML添加交互性的技术。这是一种客户端JavaScript通过将事件处理程序附加到HTML元素,将静态HTML网页转换为动态网页的技术。n6M28资讯网——每日最新资讯28at.com

近年来,水合开始被视为一个消耗内存并减慢启动速度的黑客,尤其是在移动设备上。 n6M28资讯网——每日最新资讯28at.com

二、前端开发者该为JavaScript瘦身了!

Carniato 给出了为Web中 JavaScript 代码“瘦身”的几种策略。 n6M28资讯网——每日最新资讯28at.com

1.代码分割/延迟加载

Carniato 说,代码分割和延迟加载可以显着减轻重量。“现在使用的几乎所有元框架或工具几乎都会在路线级别自动为您完成此操作,”他说。“所以你应该已经这样做了。”n6M28资讯网——每日最新资讯28at.com

关于框架如何水合需要了解的一件事是,服务器渲染的任何内容都需要水合,就好像它在页面上可见一样,这就是开发人员显示其他内容并将其交换的原因。确实需要一些手动操作才能完成这项工作,他补充道,因为如果某些东西确实存在于投降 DOM 中并且它应该是交互式的,那么它就会水合。n6M28资讯网——每日最新资讯28at.com

“延迟加载并不能阻止它。这就是这些框架的工作方式,因为它们基本上需要运行整个应用程序,”他补充道。n6M28资讯网——每日最新资讯28at.com

2.使用更小/更快的框架

Carniato 采用了一种有趣的方法来比较框架。他在开始时查看了它们的大小,然后随着更多组件添加到框架中。结果令人惊讶,因为快速框架不一定保持快速。n6M28资讯网——每日最新资讯28at.com

JavaScript 框架速度JavaScript 框架速度n6M28资讯网——每日最新资讯28at.com

“是的,你的基线 [...] 开始较小,但实际上一旦编写代码情况就变了,”他说。“因此,在某个时刻,这些组件会构成更大的一块。”n6M28资讯网——每日最新资讯28at.com

有些框架一开始很小,但随着组件的添加,框架开始相互接近。他以 Svelte 为例。“例如,Svelte 从最小的开始;当你拥有 80 个独特的组件时,它实际上比 React 和其他所有组件都大,”他说。n6M28资讯网——每日最新资讯28at.com

“所以大多数框架实际上在规模上非常相似,事实上,你可以看到最上面的那条线,那就是在开头的React——它有相同的斜率。”n6M28资讯网——每日最新资讯28at.com

3.渐进式增强

渐进式增强基于这样的理念:Web是建立在anchors 和表单之上的;他解释说,因此,如果 JavaScript 不存在,开发人员可以依靠平台中已经内置的内容。n6M28资讯网——每日最新资讯28at.com

“渐进式增强确实得到了很大的推动,特别是在 Remix 和 SvelteKit 这样的框架中,”他说。“只要将所有交互编写为anchors 和表单,那么它们无需 JavaScript 即可运行。我认为这是一件很棒的事情。”n6M28资讯网——每日最新资讯28at.com

不过,Carniato 认为,它不一定能替代其他减少JS代码的方法,但它的确创造了一种非常不同的体验。n6M28资讯网——每日最新资讯28at.com

“我之前提到的那个可怜的用户,他使用的手机需要3秒半的时间来加载解析——假设总共需要7秒才能进行交互——他们点击链接可见3秒的链接,已经过去6秒,”他说。“你猜怎么着?JavaScript 还没有加载。”n6M28资讯网——每日最新资讯28at.com

因此,现在他们必须重新加载整个页面并再次等待七秒钟,而不是使用一些可供性进行客户端导航,他补充道。n6M28资讯网——每日最新资讯28at.com

“这当然OK,但这实际上并不是完全的胜利,它并不能解决问题,”n6M28资讯网——每日最新资讯28at.com

4.渐进式水合(Progressive Hydration)

他说,渐进式水合背后的想法是,页面根据需要进行水合。当有人点击文档时,开发人员可以提前将一些事件处理程序附加到文档,然后用它来做一些聪明的事情。他补充说,有时这被称为选择性水合。n6M28资讯网——每日最新资讯28at.com

渐进式补水合  绘制:Dan Abramov渐进式补水合 绘制:Dan Abramovn6M28资讯网——每日最新资讯28at.com

Twitter上一位专家Dan Abramov为 Carniato 绘制了上图,试图展示如果 React 还没有完全水合,并且有人点击不同的分支(可能不是 React当前正在加载或水合的分支)会发生什么,那么它就会足够聪明地摆脱它正在做的事情,然后优先考虑被点击的那个分支。n6M28资讯网——每日最新资讯28at.com

“它仍然必须从父节点到子节点,但你可以给中间节点做水合,而不是绕过去;对我来说,无阻塞在这种情况下非常好,”Carniato 说道。n6M28资讯网——每日最新资讯28at.com

但事情也不是绝对的,你可能不会注意到,有时这也会导致总时间更长,另外,你会发现,后台中的CPU会嘎嘎作响,可能会在一定程度上影响体验。n6M28资讯网——每日最新资讯28at.com

此外,Carniato 还给出了其他几种 JavaScript 瘦身的办法,后续我们会跟踪报道,也欢迎诸位在评论区探讨交流。n6M28资讯网——每日最新资讯28at.com

最后想说一句,有人认为抛开JavaScript的庞大生态,去吐槽JavaScript太臃肿,有点耍赖皮,谁让现在基本所有的Web都在用它呢!n6M28资讯网——每日最新资讯28at.com

参考链接n6M28资讯网——每日最新资讯28at.com

https://thenewstack.io/solid-js-creator-outlines-options-to-reduce-javascript-code/n6M28资讯网——每日最新资讯28at.com

https://www.zhihu.com/question/550421589/answer/2710011944n6M28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-14331-0.htmlJavaScript,是时候瘦瘦身了!

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 聊聊 Libuv 最近引入的 io_uring

下一篇: 业务痛点如此不同,为什么解决办法却那么一致?

标签:
  • 热门焦点
  • 红魔电竞平板评测:大屏幕硬实力

    红魔电竞平板评测:大屏幕硬实力

    前言:三年的疫情因为要上网课的原因激活了平板市场,如今网课的时代已经过去,大家的生活都恢复到了正轨,这也就意味着,真正考验平板电脑生存的环境来了。也就是面对着这种残酷的
  • 小米平板5 Pro 12.4简评:多专多能 兼顾影音娱乐的大屏利器

    小米平板5 Pro 12.4简评:多专多能 兼顾影音娱乐的大屏利器

    疫情带来了网课,网课盘活了安卓平板,安卓平板市场虽然中途停滞了几年,但好的一点就是停滞的这几年行业又有了新的发展方向,例如超窄边框、高刷新率、多摄镜头组合等,这就让安卓
  • vivo TWS Air开箱体验:真轻 臻好听

    vivo TWS Air开箱体验:真轻 臻好听

    在vivo S15系列新机的发布会上,vivo的最新款真无线蓝牙耳机vivo TWS Air也一同发布,本次就这款耳机新品给大家带来一个简单的分享。外包装盒上,vivo TWS Air保持了vivo自家产
  • 19个 JavaScript 单行代码技巧,让你看起来像个专业人士

    19个 JavaScript 单行代码技巧,让你看起来像个专业人士

    今天这篇文章跟大家分享18个JS单行代码,你只需花几分钟时间,即可帮助您了解一些您可能不知道的 JS 知识,如果您已经知道了,就当作复习一下,古人云,温故而知新嘛。现在,我们就开始今
  • 每天一道面试题-CPU伪共享

    每天一道面试题-CPU伪共享

    前言:了不起:又到了每天一到面试题的时候了!学弟,最近学习的怎么样啊 了不起学弟:最近学习的还不错,每天都在学习,每天都在进步! 了不起:那你最近学习的什么呢? 了不起学弟:最近在学习C
  • 大厂卷向扁平化

    大厂卷向扁平化

    来源:新熵作者丨南枝 编辑丨月见大厂职级不香了。俗话说,兵无常势,水无常形,互联网企业调整职级体系并不稀奇。7月13日,淘宝天猫集团启动了近年来最大的人力制度改革,目前已形成一
  • 华为Mate 60系列用上可变灵动岛:正式版体验将会更出色

    华为Mate 60系列用上可变灵动岛:正式版体验将会更出色

    这段时间以来,关于华为新旗舰的爆料日渐密集。据此前多方爆料,今年华为将开始恢复一年双旗舰战略,除上半年推出的P60系列外,往年下半年的Mate系列也将
  • 英特尔Xe-HP项目终止,将专注Xe-HPC/HPG系列显卡

    英特尔Xe-HP项目终止,将专注Xe-HPC/HPG系列显卡

    据10 月 31 日消息报道,英特尔高级副总裁兼加速计算系统和图形事业部总经理 表示,Xe-HP“ Arctic Sound” 系列服务器 GPU 已经应用于 oneAPI devcloud 云服
  • AI艺术欣赏体验会在上海梅赛德斯奔驰中心音乐俱乐部上演

    AI艺术欣赏体验会在上海梅赛德斯奔驰中心音乐俱乐部上演

    光影交错的镜像世界,虚实幻化的视觉奇观,虚拟偶像与真人共同主持,这些场景都出现在2019世界人工智能大会的舞台上。8月29日至31日,“AI艺术欣赏体验会”在上海
Top