你不需要 React:用原生 JavaScript 创建一个最小化 UI 库
一篇提出用极小的原生 JavaScript UI 库作为 React 替代方案的博客文章,再次引发了关于何时才真正需要重型框架的争论。评论者质疑作者将“即时模式”套用到 DOM 上的说法,并指出状态管理、DOM 性能和边缘情况等问题正是完整框架所解决的;与此同时,另一些人则称赞这是一次有教育意义的练习,并注意到该库体积非常小。更广泛地说,人们在争论大多数 Web 应用究竟是否真的需要 React 风格工具,还是更简单的 HTML/CSS/JS 或更轻量的选项如 Preact 或 Astro 就已足够,尤其是在 AI 能生成大量样板代码的时代。
关于这个迷你 UI 库的整体反应
- 有些人觉得这个项目很有教育意义,并喜欢它展示了多么少的 JS 就能支撑一个完整网站。
- 也有人认为示例代码(例如井字棋)恰好说明了为什么 React 或类似框架很有价值。
- 还有少数读者明确表示,他们乐于看到实验和替代方案,即使它们并不完整。
React vs “你不需要 React”
- 许多人认为 React 被过度使用了,尤其是在简单、内容为主的网站或基础交互场景中。
- 也有人反驳说,如果你最终无论如何都会需要类似 React 的功能,那不如一开始就用 React(或 Preact/Vue/Svelte 等)。
- 一些人认为迷你框架忽略了 React 解决的主要问题:状态管理、diff、调度以及复杂的 DOM 更新。
即时模式 vs 保留模式
- 几位评论者表示,文章对“即时模式”一词的使用不当;基于 DOM 的渲染本质上就是保留模式。
- 讨论中也有人争论 React 是否是“建立在 DOM 之上的即时模式”,但线程中的共识更倾向于“不是,它是保留模式”。
- 还有人指出,把 DOM 假装成即时模式会导致诸如输入状态丢失之类的问题。
性能、体积与复杂性
- 这个库因其体积很小而受到称赞(约 2–3 kB),整体页面的 JS 约为 60 kB。
- 反方观点是:Preact 已经足够小了,因此仅凭体积并不足以证明自定义库的合理性。
- 多位评论者强调,简单的 pub/sub 或“全部重新渲染”方案并不能扩展;现代框架在细粒度响应性和 DOM 调度上投入了大量工程。
使用场景:简单网站 vs 复杂应用
- 很多人认为,大多数网站都可以直接使用纯 HTML/CSS,或者通过少量 JS 进行服务端渲染;对于常见的 CRUD 应用或博客来说,SPA 和 React 都过于重型。
- 也有正在构建复杂、高交互应用的人(例如大型表单、离线模式、可访问性)表示,像 React 这样的框架确实能显著提升可维护性和团队生产力。
AI/LLM、开发体验与生态
- 有些人声称,在“AI 时代”,框架选择的重要性下降了,因为 LLM 可以生成和重构代码,甚至之后再迁移平台。
- 也有人反驳:框架设计、性能以及 SDK 生态系统(例如偏向 React/Next 的无头 CMS)仍然强烈影响现实中的选择。