月度归档:2026年04月

Node 生态落后了吗?

这两年我越来越明显地感觉到:

有些新工具,真的在把“开发”这件事重新变简单。

比如 Go,很多时候直接就是:

go run .

Python 这边有了 uv 之后,也越来越像这样:

uv run app.py

但回到 Node 世界,常见操作还是:

pnpm install
pnpm dev

于是很容易让人产生一个问题:

Node 生态是不是有点落后了?

我的答案是:

不是落后在能力上,而是落后在默认体验上。

Node 的问题,不是不能做,而是太碎了

Node 当然不是做不到“一条命令启动”。

它也有很多办法:

  • npx
  • npm exec
  • pnpm dlx
  • 各种 create-* 脚手架
  • 再加上 Bun 这种更激进的一体化方案

但问题是,Node 这些能力长期都分散在不同层里:

  • node 负责运行
  • npm/pnpm 负责装包
  • package.json scripts 负责命令入口
  • tsc/tsx/vite/webpack 负责构建或转译
  • next/vite/nuxt 再往上包一层

每一层都没问题,叠起来就会让人觉得麻烦。

相比之下,Go 和 uv 给人的感觉更直接:

我不用先理解这个生态的历史,只要先跑起来就行。

为什么 Node 会这样?

说白了,还是历史包袱。

Node 生态起得太早,先解决的是“怎么把生态做大”,不是“怎么让默认体验最统一”。

所以它天然就更强调:

  • 灵活
  • 可组合
  • 社区工具自由竞争

这带来了巨大的繁荣,但也带来了一个副作用:

入口太多,约定太多,心智负担太重。

尤其是前端项目,很多复杂度还不是 Node 自己一个人的锅。

它还要处理:

  • TypeScript
  • 浏览器兼容
  • 打包
  • 热更新
  • SSR / CSR
  • 静态资源
  • 各种框架约定

所以 Node 的“重”,一半是历史问题,一半是场景本来就复杂。

Go 和 uv 为什么会显得更现代?

不是因为它们“技术上碾压 Node”。

而是因为它们把最常见的路径做得更短。

你不需要先想:

  • 要不要先装依赖
  • 用哪个包管理器
  • 是不是还要配 TS
  • 入口命令到底在哪

而是直接先跑。

这件事看着小,但体验差别很大。

现在很多开发者真正喜欢的,不是工具更强,而是工具更少打扰自己。

Node 还行不行?

当然行,而且很多场景里还是最强。

尤其你只要在做这些事:

  • React
  • Next.js
  • Vite
  • 前端工程化
  • 组件库
  • Web 全栈

Node 生态还是最成熟、最完整、最难绕开的那一个。

所以问题从来不是 Node 不行。

而是:

它已经是最大生态了,但默认体验还是不够干净。

我的判断

如果只用一句话总结:

Node 没有落后在生态能力上,但在“开箱即用的现代工具链体验”上,确实显得老了。

Go 和 uv 让人觉得舒服,不只是因为快,而是因为它们更像现代工具:

  • 常用路径短
  • 官方入口清晰
  • 不需要先理解太多背景

Node 更像一个特别繁荣的大城市,什么都有,但路有点绕。

Go 和 uv 更像新城区,规划更清楚。

未来我觉得 Node 不会输,但 Bun、Deno、uv 这些新工具,肯定会继续逼着整个生态往更简单、更统一的方向走。

这对开发者来说是好事。

因为我们真正想要的,从来不是工具有多复杂,而是:

能不能赶紧开始写代码。

我为什么开始从 Claude Code 转向 Codex:一次真实的 AI Coding 工具迁移记录

过去一段时间,我一直在用 Claude Code 做日常开发。

它有两个很明显的优点:一是上手快,二是终端里的使用方式很符合程序员习惯。提需求、看改动、继续追问,整个流程比传统聊天框更接近真实开发。

所以很长一段时间里,我对 Claude Code 的评价都不错。
它不是那种只能“看看热闹”的 AI 工具,而是真的能用起来。

但最近,我开始越来越多地把主力切到 Codex。

原因不是谁突然“碾压”了谁,也不是单看参数得出的结论。更真实的原因是:当 AI 开始真正进入开发流程之后,我在意的东西变了。

我不再只看它会不会生成一段代码,而是更在意这些问题:

  • 它能不能看懂一个真实项目
  • 它改代码时稳不稳
  • 它能不能处理多文件、多模块的修改
  • 它是不是适合长期作为主力工具

也是在这些维度上,我开始明显感觉到:Codex 更像一个面向工程流的工具。

AI Coding 的关键,不只是“会写代码”

刚开始用 AI Coding 工具时,大家最容易关注的是:

  • 会不会写 React
  • 会不会写 Node.js
  • 一次能生成多少代码
  • 回答看起来聪不聪明

但用久了之后会发现,这些都不是最关键的。

真正重要的是:
它到底能不能帮你把真实项目往前推进。

因为真实开发不是从零写一个 demo,而是面对:

  • 已经存在的仓库
  • 不统一的历史代码
  • 多个文件之间的依赖关系
  • 改一处可能影响多处的复杂逻辑

这时候,你需要的不是“临时回答一个问题”的 AI,
而是一个能进入项目语境、理解上下文、尽量稳定修改代码的工具。

这也是我越来越看重 Codex 的原因。

为什么我开始更偏向 Codex

我现在最明显的感受,是 Codex 更像是在“读仓库”,而不是“回答问题”。

这两者差别很大。

“回答问题”式的工具,适合快速生成、快速试验。
“读仓库”式的工具,更适合真实开发。

比如一个实际需求,往往不是只改一个文件,而是会牵动:

  • 页面组件
  • 状态管理
  • API 层
  • 类型定义
  • 构建或配置逻辑

这时候,一个工具能不能在多文件上下文里稳定工作,就很关键。

我的实际体验是,Codex 在这类任务里更容易形成连续的工作过程。
不是回你一段代码就结束了,而是更像在参与一段真正的开发流程。

另外一点是,它在“改已有代码”这件事上,更符合我的预期。

因为生成新代码不难,难的是在现有系统上做修改。
有些 AI 工具第一次看很惊艳,但真放进项目里,会出现这些问题:

  • 改动表面合理,实际上破坏原逻辑
  • 修一个问题,又引入新的问题
  • 过度重写,增加 review 成本

相比之下,我现在会更信任 Codex 一些。
不是说它不会出错,而是它更容易给出“像在认真修改现有项目”的结果。

那 Claude Code 还有没有价值?

当然有。

而且我不觉得这件事应该写成“谁赢谁输”。

在我看来,它们只是更适合不同场景。

Claude Code 依然适合:

  • 快速试验一个想法
  • 处理轻量项目
  • 更灵活地尝试不同模型或组合方案
  • 作为备选工具做交叉验证

所以我现在不是完全不用 Claude Code 了。
更准确地说,是它从“主力”慢慢变成了“仍然值得保留的工具”。

我的结论

我现在的判断很简单:

Claude Code 依然是个好工具。
对于个人开发者、轻量项目、快速试验,它仍然有价值。

但如果你已经开始认真把 AI 用进真实开发里,尤其是越来越在意:

  • 仓库理解能力
  • 多文件修改能力
  • 改代码的稳定性
  • 持续协作体验

那 Codex 更值得你认真投入。

未来 AI Coding 工具真正竞争的,未必只是模型能力。
更重要的,是谁能更稳定地融入开发者每天真实的工程流程。

谁能进入工作流,谁才更可能成为主力。

而对我来说,Codex 现在越来越像那个主力。