RV大战之2024年我还想写React

原文地址:blog.hophop.work/rv2024react...
全文纯属个人观点,words are my own.

大家好,我是HopHop。

近期又上演了一场 React/Vue 大战,我也借这个时间点大概聊一聊自己对于React以及前端目前渲染类库的理解。

问题陈述

前端的框架/库要解决核心问题就是页面渲染,很多框架/库在解决渲染问题时,主要采用:

  1. 自建DSL + 编译时 + 运行时 (Vue, React)
  2. 自建DSL + 编译时 (Svelte)
  3. 纯运行时 (jQuery)

React的解决方案是纯运行时解决方案。JSX的compile时编译不对运行时代码做任何优化,不属于任何性能优化的范畴。

以上3点是目前主流的前端渲染库/框架的解决方案。但是无非是想要做到

  1. 相对优雅的DX
  2. 检测数据变更 → 【differ + 更新】或 【更新 + differ】

React在设想整个UI界面时,是完全围绕view = fn(data)的纯函数核心思想。

此纯函数核心思想即:

  1. 一份数据,对应一份UI
  2. 任何副作用需标明是副作用

同时再通过一些"技术手段"保证每次data的变更后,fn可以持续稳定一致的执行,不断的differ,最终影响到ui的变更。可以理解为优化手段完全控制在运行时。

在这种前提下,React需要给出闭包的各种hack解法,例如:

  1. JavaScript闭包带来的各类快照
  2. 状态记忆和清理
  3. 各类快照的对比

这也就带来了很多新手会碰到的DX问题,例如useRef, useState的选择,useEffect的概念和onMount概念的区别等等,甚至加入了strict mode,在dev模式下强制执行两遍effect来保证用户代码的正确运作。

所以其实对于React来说,每一步设计的加入都是相当的困难,因为目前的DX体验已经完全走下坡路了。在设计API时,不仅要考虑到开发者体验(写法,理解能力),还要为了保证内部很多的hack手段的正常工作。

React在官网上花了无数的笔墨去解释很多hook的内部到底是怎么工作,用户应该如何编写去让这些hook正确运作,例如

官方的一些compile时的优化想法

用一些新的hook来解决已有的DX问题:

React的hook理念在推出之初绝对是相当革新的设计,但是目前React在这条路上已经没法回头了🥺

我觉得就搞搞React Server Component挺好的,狗头保命(

相关推荐
学嵌入式的小杨同学5 小时前
从零打造 Linux 终端 MP3 播放器!用 C 语言实现音乐自由
linux·c语言·开发语言·前端·vscode·ci/cd·vim
weixin_425543736 小时前
TRAE CN3.3.25 构建的Electron简易DEMO应用
前端·typescript·electron·vite·nestjs
Mr Xu_6 小时前
【Vue3 + ECharts 实战】正确使用 showLoading、resize 与 dispose 避免内存泄漏
前端·信息可视化·vue·echarts
0思必得07 小时前
[Web自动化] Selenium设置相关执行文件路径
前端·爬虫·python·selenium·自动化
雯0609~7 小时前
hiprint:实现项目部署与打印1-官网提供普通html版本
前端·html
不绝1917 小时前
UGUI——进阶篇
前端
Exquisite.8 小时前
企业高性能web服务器(4)
运维·服务器·前端·网络·mysql
2501_944525548 小时前
Flutter for OpenHarmony 个人理财管理App实战 - 账户详情页面
android·java·开发语言·前端·javascript·flutter
2601_949857438 小时前
Flutter for OpenHarmony Web开发助手App实战:快捷键参考
前端·flutter
wangdaoyin20108 小时前
若依vue2前后端分离集成flowable
开发语言·前端·javascript