2023年,NPM下载量前100的包里,React生态占了37个。但一个干了15年前端的老兵说:「我再也不用那玩意儿了。」
这话听着像叛逃。但看完他的账本,你可能会重新算一笔账。
从React信徒到"裸奔"开发者
作者的身份有点意思。他不是那种从没用过框架就嚷嚷"原生最好"的复古派——恰恰相反,疫情那几年他"bundled, I transpiled. I reacted",钩子规则倒背如流,树渲染的玄学门儿清。
转折点是个意外。有份合同死线压顶,他没空把关键库迁进React的"电影宇宙",干脆直接写JS、改DOM。结果?50行代码搭了个流式对象,用户输入响应零延迟,零bug。
「我感觉被骗了。」他原话。原来让网页动起来,根本不需要框架作者的博士学位。
今年他又试了一次。做确定性模拟测试的HTML报告,本能地选了Preact走"最佳实践"。然后报错弹了一脸:Hydration失败、组件树断裂——这些词他曾经精通,现在只觉得烦躁。
换回原生JS。又好了。
维护成本的隐藏条款
框架销售的话术很统一:抽象层帮你屏蔽DOM的复杂度。技术上没错,但 spirit(精神实质)完全两码事。
React确实抽象了DOM,但它同时引入了一套平行宇宙。你要学JSX的编译规则、hooks的闭包陷阱、useEffect的依赖数组侦探游戏。版本迭代?2022年的最佳实践到2024年可能成反模式。Next.js的App Router把社区撕成两半,不是新闻。
浏览器API走的另一条路。作者列了组数据:过去5年,Web Components的浏览器支持从62%涨到97%,零 breaking change。IndexedDB、Broadcast Channel、View Transitions——这些API被设计得要撑10年以上。
框架的"快速迭代"对短期项目是福,对长期维护是复利债务。作者的原话:「生产环境跑超过几个月的东西,原生JS的维护故事好得多。」
LLM时代的文档优势
这点很多人没算过。Vanilla JS的文档是MDN——结构化、版本清晰、示例经过20年打磨。当你让Claude或Copilot写代码时,训练数据里MDN的权重远高于某个框架的Discord讨论串。
作者亲测:用自然语言描述需求,LLM生成的原生代码可直接运行。换React?经常需要手动修正hooks依赖、纠正过时的生命周期写法。文档质量直接转化为AI辅助编程的准确率。
开发体验是另一笔账。没有source map调试地狱,没有transpiler的等待时间,没有node_modules的黑洞。他形容这种感觉:「像能直接呼吸了。」
"重新发明轮子"的指控
反对声音很标准:原生JS是在重复造轮子,React已经解决了状态管理、组件复用、虚拟DOM diff。
作者的回应很产品经理:看场景。他需要的不是"管理复杂应用状态",是让一个报告页面能交互。50行的流式对象够用了,为什么要背100KB的运行时?
他承认框架有存在价值。但「默认用React」的集体无意识,让很多团队给简单问题支付了超额复杂度。一个内部仪表盘、一个配置后台、一个数据展示页——这些占前端工作的多大比例?没人统计过,但作者赌是大多数。
Preact作者Jason Miller有过类似观察。他在2022年写道,很多项目用React是因为"简历驱动开发"——开发者需要市场认可的技能,而非项目需要React的架构。
技术选择的权力结构
文章最狠的类比在这里:React不是DOM的抽象,是DOM的替代。它创造了一套平行语法,让你越来越难回到平台本身。
这像什么?像SaaS的锁定策略。迁移成本越高,生态粘性越强。不是阴谋论,是激励结构自然演化的结果。
作者没说的是:这种锁定谁在买单。初级开发者学React而非浏览器API,因为招聘启事这么写。团队选型React,因为"没人因为买IBM被开除"的变体。技术债务累积,直到某个凌晨2点的生产事故,有人盯着hydration错误的堆栈 trace 发呆。
他的选择是退出这个游戏。不是反对所有框架,是反对不加思考的默认。
上个月,他把那个确定性模拟测试的报告页面开源了。代码量:HTML 120行,JS 80行,CSS 60行。零依赖,零构建步骤,直接扔给浏览器。
Star数不多,但有个issue让他笑了:「这能跑?我以为现在必须用Vite+React+Tailwind。」
如果2025年你要启动一个新项目,第一行代码会写什么?
热门跟贴