Deno 是一个用来在服务器上运行 JavaScript 和 TypeScript 代码的开源运行时(runtime,即执行代码的基础环境),是 Node.js 的现代替代品:它完全兼容 Node 项目和 npm 包,同时把包管理、测试、格式化、代码检查等一整套开发工具直接内置,装完即用。适合想从 Node.js 迁移的老项目开发者、讨厌繁琐工具链配置的全栈开发者,以及需要高安全边界的服务端程序。

Deno 是什么,解决什么问题

Node.js 统治 JavaScript 服务端多年,但工具链是「拼装」出来的:装包用 npm,测试要另配框架,格式化、代码检查(lint)又是别的工具,还要单独处理 TypeScript 编译。Deno 把这些问题打包解决:一个 deno 命令同时是包管理器、测试运行器、格式化器、linter、任务运行器、类型检查器,还带覆盖率统计、文档生成器、Jupyter kernel 和桌面应用构建器,基本不需要配置文件。

Deno 由 Rust 语言编写,官方对自己的定位是「比 Node 更快,比 Bun 更稳」。

兼容 Node,迁移成本低

Deno 能直接运行 Node 代码,识别 package.json、node_modules、tsconfig.json 这些 Node 项目标配文件,支持 ESM(现代 JavaScript 的标准模块格式)、JSX/TSX(在代码里直接写界面标签的语法)、node:* 内置模块和 CommonJS(旧式的模块加载规范),还能理解 pnpm 和 yarn 的 lockfile(依赖锁定文件)。这意味着把一个现有 Node 项目迁到 Deno 通常不需要重写代码。官方提供 deno check 一条命令做全量类型检查,开箱即用。

性能:官方基准多项领先

官网公布的基准数据(100 并发连接、取中位数)显示:

  • 真实场景吞吐:Deno 72,400 req/s,Bun 68,200,Node 44,000
  • p99 延迟(99% 的请求都能达到的耗时上限):Deno 1.87 ms,Bun 2.80 ms,Node 3.76 ms
  • 真实场景峰值内存:Bun 45 MB、Deno 64 MB、Node 116 MB(越低越好)

纵向看:相对 Deno 2.0,2.9 的内存效率提升 3.2 倍、p99 延迟降低 2.1 倍、冷启动(进程从零启动到就绪的耗时)提速 1.5 倍;npm 包安装比 Deno 2.8 快 3.66 倍。TypeScript 启动耗时 19.6 ms,Node 是 50.0 ms。

安全:默认拒绝一切权限

Deno 的安全模型是「默认拒绝」:程序默认不能读写文件系统、不能联网、不能访问环境变量,需要显式授权(如 --allow-net)才能打开对应能力。在「默认拒绝」之上还有作用域授权(对单次调用做细粒度放行)和集中审计(记录每一次权限授予与拒绝的日志),构成三层防御。这个特性对运行第三方代码、AI agent 等场景尤其有用。

生态与现状

Deno 在 GitHub 上拥有 100k+ star,月活用户 400k+,生产环境使用者包括 Slack、Supabase、Salesforce、Spotify、Stripe、美国银行和腾讯。官方配套产品还包括:Deno Deploy(无需自己管理服务器的云托管平台)、Deno Desktop(直接用网页技术构建原生桌面应用,不需要 Electron 框架)、Deno Sandbox(在安全隔离的 Linux 虚拟机里运行不可信代码)。标准库 @std 在 JSR 包仓库发布,覆盖解析、集合、格式化、日期等常用模块,由 Deno 团队维护、无第三方依赖。

结论

Deno 2.9 的核心价值是「一个命令搞定 JavaScript 服务端开发」:兼容 Node、工具链全内置、性能实测领先、默认安全。如果你正在用 Node.js,值得拿一个项目试跑 Deno——迁移成本低,收益主要在工具链简化和性能提升。