核心特性
Deno 的设计哲学和关键技术特性
🔒 默认安全
默认无权限运行,需显式授权文件、网络、环境变量等访问
📦 原生TypeScript
无需配置,直接运行TypeScript,内置类型检查
🔗 URL导入
支持从URL直接导入模块,无需node_modules
🛠️ 内置工具
内置格式化、测试、打包、文档生成等开发工具
⚡ Web标准API
使用Web标准API(fetch、WebSocket等),减少学习成本
🚀 现代JavaScript
支持Top-level await、ES模块、异步迭代等现代特性
生态系统
Deno 核心模块和官方工具
Deno Deploy
边缘计算平台,全球部署Deno应用
Fresh
Deno全栈框架,零运行时开销
JSR
Deno官方包注册表,支持TypeScript
Deno KV
全球分布式键值数据库
快速入门
# 安装Deno
# macOS/Linux
curl -fsSL https://deno.land/install.sh | sh
# Windows (PowerShell)
irm https://deno.land/install.ps1 | iex
# 创建TypeScript文件
echo 'console.log("Hello from Deno!");' > main.ts
# 运行TypeScript
deno run main.ts
# 运行并授权文件访问
deno run --allow-read main.ts
# 运行Web服务器
deno run --allow-net server.ts
配置示例
// deno.json
{
"tasks": {
"dev": "deno run --watch --allow-net main.ts",
"test": "deno test --allow-read",
"fmt": "deno fmt",
"lint": "deno lint"
},
"imports": {
"std/": "https://deno.land/std@0.224.0/",
"oak": "https://deno.land/x/oak@v12.6.1/mod.ts"
},
"compilerOptions": {
"strict": true,
"lib": ["deno.window"]
}
}
// server.ts - Oak Web服务器
import { Application, Router } from "oak";
const router = new Router();
router.get("/", (ctx) => {
ctx.response.body = { message: "Hello from Deno!" };
});
const app = new Application();
app.use(router.routes());
app.use(router.allowedMethods());
console.log("Server running on http://localhost:8000");
await app.listen({ port: 8000 });
学习资源
学习路径
与其他运行时对比
vs Node.js
Deno默认安全、原生TypeScript、URL导入。Node.js生态更成熟、兼容性更好。
vs Bun
Deno注重安全和标准,Bun注重速度和Node兼容性。两者都支持TypeScript。