心智模型
理解 Deno 运行时、权限、模块、缓存与内置工具的职责边界
一张图记住 Deno
源代码 (.ts/.js/.wasm)
├─ 模块:本地 / JSR / npm / URL
├─ 配置:deno.json(c) + deno.lock
├─ 工具:fmt / lint / check / test / doc / compile
└─ 运行:Web API + Deno API + Node 兼容层
↓
权限边界 (--allow-* / --deny-*)
↓
文件、网络、环境变量、子进程、FFI
与 Node.js 最不同的三点
- 安全默认值:敏感 I/O 默认拒绝,权限可以限制到路径、主机或变量名。
- TypeScript 直接运行:执行时会转译但不会自动完成完整类型检查;CI 仍应运行
deno check。 - 一体化工具链:格式化、Lint、测试和文档生成属于同一版本的 CLI。
依赖不等于一种来源
- JSR 包使用
jsr:,适合 TypeScript 原生包与 Deno 标准库。 - npm 包使用
npm:,Node 内置模块使用node:。 deno.json的imports可以把完整 specifier 映射为稳定的裸导入名。deno.lock固定解析结果并记录完整性信息,应提交到版本库。