Deno 曾经试图重新定义 JavaScript 的服务端运行时。它解决了 Node.js 的一些历史问题,却最终选择加入 Cloudflare,停止独立运行时的持续开发。2026 年 10 月 9 日,Deno 创始人 Ryan Dahl 宣布整个团队加入 Cloudflare,Deno 运行时将继续维护一年,之后结束官方开发。Deno Deploy 则将在六个月后关闭,JSR 包注册服务继续运营。
Deno 最初想解决什么问题?
Ryan Dahl 是美国软件工程师,以创建 Node.js 和 Deno 两款 JavaScript 运行时而闻名。2009 年,他推出 Node.js,将 JavaScript 引入服务端开发,推动了非阻塞 I/O 和事件驱动编程模式的普及。2018 年,他又推出 Deno,尝试通过默认权限控制、原生 TypeScript 支持等设计改进 Node.js 的不足。2026 年,Deno 团队加入 Cloudflare,转向开发 Workers 相关技术。
2018 年,Ryan Dahl 推出 Deno,希望纠正自己在设计 Node.js 时的一些不足。Deno 采用默认权限隔离机制,脚本访问文件、网络等资源时可以受到明确控制;它原生支持 TypeScript,并提供格式化、测试等集成工具,试图减少项目初始化和依赖管理的复杂度。
这些设计并非没有价值。尤其是权限控制,它让开发者能够更精细地限制脚本的行为,而不必完全依赖应用自身的安全约束。Deno 也证明了 JavaScript 服务端开发可以拥有不同于 Node.js 的工程体验。
问题在于,技术设计更优秀,不等于能够建立一个可持续的生态。
兼容性,既是出路,也是陷阱
Deno 面临的核心问题,是 Node.js 已经建立起来的生态壁垒。大量 npm 包、成熟的开发工具、丰富的社区经验,以及企业现有的技术栈,共同构成了强大的网络效应。开发者选择运行时,不只是在比较 API 和性能,更是在评估整个生态的迁移成本。
2024 年发布的 Deno 2.0 大幅增强了 Node.js 和 npm 生态兼容性。这个选择有其合理性:降低迁移门槛,才能吸引更多开发者。但兼容性越强,Deno 与 Node.js 的差异化优势就越难维持。既然原有代码可以继续运行在 Node.js 上,团队为什么还要承担引入新运行时的维护和运维成本?
Ryan Dahl 后来也承认,Deno 逐渐受到 Node.js 兼容性需求的束缚,最终变成了另一种 Node.js 实现。
技术创新必须解决更大的问题
Deno 的经历说明,优秀的工程设计只是产品成功的必要条件之一。对于基础设施项目而言,真正的竞争力还包括生态规模、迁移收益、长期维护能力,以及能否创造现有平台难以提供的新价值。
这也解释了 Deno 团队为什么选择加入 Cloudflare。相比继续维护一个独立运行时,他们将转向 Workers、Durable Objects 等技术,探索将计算、存储和通信整合起来的分布式应用开发模式。
Deno 并非毫无价值。它的开源代码仍然存在,社区也可以继续维护。但从商业和技术战略上看,团队已经决定把资源投入到更有潜力的平台方向。
对开发者而言,最值得记住的教训是:不要只追求把现有技术做得更好,还要判断自己解决的问题是否足够重要。 当一个新项目最终只能提供局部改进,却无法让用户获得足以覆盖迁移成本的收益时,即使技术本身足够优秀,也很难撼动成熟生态的地位。