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

推荐订阅源

雷峰网
雷峰网
宝玉的分享
宝玉的分享
I
InfoQ
P
Privacy International News Feed
V
V2EX
IT之家
IT之家
S
SegmentFault 最新的问题
D
Darknet – Hacking Tools, Hacker News & Cyber Security
V2EX - 技术
V2EX - 技术
C
CERT Recently Published Vulnerability Notes
C
Check Point Blog
The Register - Security
The Register - Security
爱范儿
爱范儿
博客园 - 三生石上(FineUI控件)
AWS News Blog
AWS News Blog
M
MIT News - Artificial intelligence
C
Cyber Attacks, Cyber Crime and Cyber Security
F
Fortinet All Blogs
B
Blog
N
Netflix TechBlog - Medium
B
Blog RSS Feed
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Last Week in AI
Last Week in AI
T
Threatpost
Forbes - Security
Forbes - Security
U
Unit 42
A
Arctic Wolf
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
P
Palo Alto Networks Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Recorded Future
Recorded Future
L
Lohrmann on Cybersecurity
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
P
Proofpoint News Feed
月光博客
月光博客
Spread Privacy
Spread Privacy
MongoDB | Blog
MongoDB | Blog
Jina AI
Jina AI
I
Intezer
V
Visual Studio Blog
阮一峰的网络日志
阮一峰的网络日志
The Hacker News
The Hacker News
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
L
LangChain Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
博客园_首页
MyScale Blog
MyScale Blog
腾讯CDC
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
量子位

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 能承担的。