惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 聂微东
博客园 - 叶小钗
爱范儿
爱范儿
罗磊的独立博客
Hugging Face - Blog
Hugging Face - Blog
阮一峰的网络日志
阮一峰的网络日志
S
SegmentFault 最新的问题
Apple Machine Learning Research
Apple Machine Learning Research
美团技术团队
T
Tailwind CSS Blog
博客园 - 司徒正美
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
宝玉的分享
宝玉的分享
量子位
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
The Cloudflare Blog
人人都是产品经理
人人都是产品经理
小众软件
小众软件
博客园 - 【当耐特】
博客园 - 三生石上(FineUI控件)
V
Visual Studio Blog
雷峰网
雷峰网
酷 壳 – CoolShell
酷 壳 – CoolShell

SWAVES

Node.JS 作者 Ryan Dahl 的故事 相信数字还是相信直觉 - 臨池不輟 我做程序员这十年 - 臨池不輟 从《如梦令·昨夜雨疏风骤》读出人生三重境界 - 臨池不輟 所谓的设计系统 - 臨池不輟 Fabric.js 原理与源码解析 - 臨池不輟 从实际案例讲 Deno 的应用场景 - 臨池不輟 前端开发的瓶颈与未来之路 - 臨池不輟 Java 并发与多线程教程 - 臨池不輟 漫谈哲学与编程 - 臨池不輟 法布里斯·贝拉 — 一个真正的程序员 - 臨池不輟 我想要 AOP — 使用 AOP 分离关注点 Nestjs 框架教程(第十篇:拦截器) - 臨池不輟 Nestjs 框架教程(第九篇:守卫) - 臨池不輟 Nestjs 框架教程(第八篇:管道) - 臨池不輟 Nestjs 框架教程(第七篇:异常过滤器) - 臨池不輟 Nestjs 框架教程(第六篇:中间件) - 臨池不輟 Nestjs 框架教程(第五篇:模块) - 臨池不輟 Nestjs 框架教程(第四篇:Providers) - 臨池不輟
React 随想 - 臨池不輟
keelii · 2025-09-28 · via SWAVES

看到 HN 上关于 React 的一些讨论,也想说点我的看法。


那么让我来总结下React的优缺点:

首先谈到 React 的优缺点就不可避免的涉及到 JavaScript 这们语言的优缺点,再扩大一点讲就是前端的优缺点。

React 出现的原因是要解决 UI 的复杂度问题,简单理解成 HTML 和 JS 的复杂度问题。为什么?HTML 不是很简单么,有什么复杂度?

HTML 是用户界面的复杂度,JavaScript 是工程层面的复杂度。前端程序员的使命就是解决这两者之间存在的复杂度,从而构建高效的 GUI 软件。

而在所有的 GUI 软件中,HTML 界面是最变化多端的,它代表着可以给用户提供各式各样的花哨吸引眼球的功能和视觉冲击,从而解决某些心理诉求而不是功能需求。然而工程层面从来不关心这些东西,工程层面只关心效率、稳定、成本。

其次 JavaScript 这门语言本来是有很多缺点的,最大的缺点我认为是设计和实现上的不一致性,设计是 tc39,但实现却是各个主宰浏览器的大公司组织。一个很简单的问题是:ECMA-262 规定所有 JavaScript 的数字类型都是 double 双精度浮点,而实现上根本不可能这么做,因为如果那样的话在 JavaScript 中数字类型占用的内存将会翻倍。有人可能说性能不重要,但是真的不重要吗?

最后,让我来讲讲 React 的优缺点:

React 最好的设计在于解决了 HTML/JavaScript 之间的复杂度,它使得 JavaScript 在构建大型前端工程中时,分散的复杂度的治理集中到了 JavaScript 层面,这就很有意思了,因为我们总是想让 HTML/CSS 这类看起来像是程序语言的东西真正的具备“编程能力”,因为只有这样,通过 JavaScript 去构建工程时,代码层面才会是一致的。

React 最大的缺点在于它的定义和它被使用的场景出现了偏差,React 从来就说它是一个 library 而不是 framework,但是当我们用它来构建前端应用的时候,我们总是想要一个 framework 而不仅仅是一个 library。一个 library 的内核是函数式的思想这没有问题,但是人们会受到影响,当 React 的用户越来越多,而 React 本身又推崇函数式的范式,那社区就会有不正的风气。这种风气可能对语言生态产生间接影响,比如 tc39 decorators proposal,天知道这个提案什么时候才会被通过,大家觉得不需要 class 了,所以这个提案就不会有继续下去的动力了。

然而实事上讲 React 它对自己的定义一点都没变,它的设计方向也很一致。问题是它承担了很大量级的受众优势,但它从没考虑过这其中的责任。当然这个责任也不是 React 一个 library 能承担的。