Deno 与 Rust
问题
Deno 是什么?它与 Rust 的关系是什么?
答案
Deno 是 Ryan Dahl(Node.js 创始人)用 Rust 重新构建的 JavaScript/TypeScript 运行时,旨在修复 Node.js 的设计缺陷。
关于 Node.js 基础,可参考 Node.js 基础。
Deno 的 Rust 架构
Deno 的核心组件全部由 Rust 实现:
- 运行时:Tokio 驱动的异步 IO
- TypeScript:SWC 编译,无需
tsc - HTTP:hyper(Rust 最快的 HTTP 库)
- V8 绑定:rusty_v8
Deno vs Node.js
| 维度 | Node.js | Deno |
|---|---|---|
| 语言 | C++ | Rust |
| TypeScript | 需要 tsc/SWC | 原生支持 |
| 模块 | CommonJS + ESM | ESM only |
| 包管理 | npm + node_modules | URL import / npm 兼容 |
| 安全 | 无沙箱 | 权限模型 |
| 内置工具 | 无 | fmt, lint, test, bench |
| Web API | 部分 | 尽量对齐浏览器 |
权限模型(Rust 实现的安全沙箱)
# 默认禁止所有权限
deno run script.ts
# Error: Requires net access
# 显式授权
deno run --allow-net --allow-read=./data script.ts
这是 Deno 最重要的设计——Rust 的类型系统在编译时保证权限检查不可绕过。
常见面试问题
Q1: Deno 用 Rust 构建带来了什么优势?
答案:
- 安全模型:Rust 的类型安全保证权限沙箱的正确性
- 性能:Tokio 异步运行时 + hyper HTTP = 极致性能
- TypeScript:内置 SWC 编译,启动即用
- 稳定性:Rust 的内存安全减少 runtime crash