搜索
首页web前端css教程RadeVentListener:客户端框架性能的故事

RadeVentListener:客户端框架性能的故事

React的受欢迎程度并非没有批评者。该框架的相当大的尺寸(约120 kib缩小)显着影响启动时间,尤其是仅依靠客户端渲染时。即使使用客户端水合的服务器端渲染也仍然是性能密集的。尽管React在复杂的州管理中表现出色,但其资源需求通常超过更简单的应用程序中的好处。这可以有效地排除使用功能较低的硬件的用户。

尽管我保留了React的性能开销,但我还是感谢其组件化模型和JSX语法。服务器端渲染(或使用preact,我首选的替代方案)仍然是宝贵的资产。但是,确定适当的客户端用法仍然是一个挑战。本文详细介绍了我有关优化React性能的发现,以获得更好的用户体验。

上下文:RSS提要应用程序

我的rss feed应用程序bylines.fyi在服务器和客户端都使用JavaScript。虽然我并不固有地不喜欢客户端框架,但我的经验突出了两个反复出现的问题:

  1. 框架可以掩盖基础的网络平台,从而阻碍对它们何时真正有益的深刻理解。
  2. 框架并不总是保证最佳用户体验。

蒂姆·卡德克(Tim Kadlec)对Web框架性能的Httparchive研究加剧了这些问题,揭示了React的表现不佳。我的目标是在减轻其客户端缺陷的同时利用React的服务器端优势。

实验:移动导航切换

我的RSS应用需要客户端的JavaScript来进行简单的移动导航切换,这是“简单状态”的经典示例。我经常看到反应组件过度用于此类简单任务,从而导致不必要的性能开销。该实验虽然看似琐碎,但它是了解框架选择如何扩展的关键基准。重要的是要注意,大多数开发人员不仅会依靠这种次要功能的反应,但是结果说明了对运行时性能的架构影响。

测试条件

该实验比较了四个设备上的三个移动导航实现:

  1. 状态反应组件:服务器渲染和客户端熔融。
  2. 状态的预先反应组件:服务器渲染和客户端水合。
  3. 无状态的提前部分:服务器渲染,水合;使用标准事件听众。

设备包括:

  1. 诺基亚2 Android电话(Chrome 83)
  2. 华硕X550CC笔记本电脑(Windows 10,Chrome 83)
  3. 第一代iPhone SE(Safari 13)
  4. 第二代iPhone SE(Safari 13)

指标

为每个实施和设备测量了以下指标:

  1. 启动时间:包括框架加载和水合(react/preaxct),或者只是事件侦听器代码(EventListener)。
  2. 水合时间:启动时间的子集(仅反应/预先反应)。
  3. 移动导航开放时间:在事件处理中测量框架开销。

方法论

测试涉及远程调试和分析,每个场景和设备的十个迭代记录了每个度量的CPU时间。网络性能不是一个因素。

结果

由于数据的复杂性,结果以表格格式显示,显示最小,最大,中值和平均CPU时间。 (详细的表格在随附的电子表格中可用)。关键发现包括:

  • React的高创业和水合成本:在低端诺基亚2上尤其明显。
  • PREACT的提高性能:比React的速度要快得多,但在诺基亚2上仍超出了理想的框架预算。
  • 卓越的事件听众的性能:始终比React和Exct都要快,尤其是对于简单的互动。

讨论:浅呼叫堆栈

性能差异源于框架加载和水合的开销。尽管某些性能权衡是不可避免的,但对于开发人员的便利性而言,余额通常会倾向于开发人员的体验,而用户则以牺牲用户为代价。呼叫堆栈的React和PreACT Hydration突出了重大处理需求,尤其是对于简单的任务。使用本地事件侦听器为简单的状态管理提供了一种更有效的方法。

结论和建议

这种分析不是作为反应批评的,而是鼓励批判性评估框架选择及其性能的影响。几种策略可以减轻绩效问题:

  1. 在可能的情况下,对无状态组件的重构状态组件。
  2. 避免客户端的JavaScript和无状态组件的水合。
  3. 使用独立于框架的事件听众进行简单的交互。
  4. 懒惰的水合物组件使用相交观察者或requestIdleCallback
  5. 将预先反应视为反应的更快替代方法。
  6. 使用navigator.deviceMemory适应低内存设备的用户体验。

优先考虑各种设备的性能测试,以确保具有不同硬件功能的用户包容性。目标应该是每个人的快速访问的网络体验。

特别感谢埃里克·贝利(Eric Bailey)的编辑反馈和CSS-Tricks员工发表本文。

以上是RadeVentListener:客户端框架性能的故事的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
什么是CSS网格?什么是CSS网格?Apr 30, 2025 pm 03:21 PM

CSS网格是创建复杂,响应式Web布局的强大工具。它简化了设计,提高可访问性并提供了比旧方法更多的控制权。

什么是CSS Flexbox?什么是CSS Flexbox?Apr 30, 2025 pm 03:20 PM

文章讨论了CSS FlexBox,这是一种布局方法,用于有效地对齐和分布响应设计中的空间。它说明了FlexBox用法,将其与CSS网格进行了比较,并详细浏览了浏览器支持。

我们如何使用CSS使网站迅速响应?我们如何使用CSS使网站迅速响应?Apr 30, 2025 pm 03:19 PM

本文讨论了使用CSS创建响应网站的技术,包括视口元标签,灵活的网格,流体媒体,媒体查询和相对单元。它还涵盖了使用CSS网格和Flexbox一起使用,并推荐CSS框架

CSS盒装属性有什么作用?CSS盒装属性有什么作用?Apr 30, 2025 pm 03:18 PM

本文讨论了CSS盒装属性,该属性控制了元素维度的计算方式。它解释了诸如Content-Box,Border-Box和Padding-Box之类的值,以及它们对布局设计和形式对齐的影响。

我们如何使用CSS动画?我们如何使用CSS动画?Apr 30, 2025 pm 03:17 PM

文章讨论使用CSS,关键属性并与JavaScript结合创建动画。主要问题是浏览器兼容性。

我们可以使用CSS向我们的项目添加3D转换吗?我们可以使用CSS向我们的项目添加3D转换吗?Apr 30, 2025 pm 03:16 PM

文章讨论了Web项目的3D转换,关键属性,浏览器兼容性和性能注意事项的讨论。(角色计数:159)

我们如何在CSS中添加梯度?我们如何在CSS中添加梯度?Apr 30, 2025 pm 03:15 PM

文章讨论了使用CSS梯度(线性,径向,重复)来增强网站视觉效果,添加深度,焦点和现代美学。

CSS中的伪元素是什么?CSS中的伪元素是什么?Apr 30, 2025 pm 03:14 PM

文章讨论了CSS中的伪元素,它们在增强HTML样式方面的使用以及与伪级的差异。提供实用的例子。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript开发工具

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。