Deno 是一個現代化的 JavaScript 和 TypeScript 運行時,旨在解決 Node.js 的一些設計缺陷。它由 Node.js 的原創者 Ryan Dahl 於 2018 年提出,於 2020 年發布 1.0 版本。以下是 Deno 的核心介紹:
--allow-net
或 --allow-read
)。.ts
文件,並內置了 TypeScript 編譯器。import
/export
語法),不支持 Node.js 的 CommonJS。import { x } from 'https://...'
),無需 node_modules
或包管理器。npm
,Deno 允許從任何 URL 導入模塊,並支持版本控制(例如 https://deno.land/[email protected]
)。deno.land/x
作為第三方模塊的托管平台。deno fmt
(代碼格式化)deno test
(運行測試)deno bundle
(打包應用)deno lint
(代碼檢查)deno doc
(生成 API 文檔)std
),位於 deno.land/std
,涵蓋文件操作、HTTP 服務器、UUID 等功能。fetch
、URL
、TextEncoder
),與瀏覽器環境高度兼容。特性 | Deno | Node.js |
---|---|---|
模塊系統 | ES Modules | CommonJS + ES Modules |
包管理 | URL 導入,無 node_modules | npm, node_modules |
安全模型 | 預設無權限,需顯式授予 | 預設完全訪問 |
TypeScript 支持 | 原生支持 | 需要額外配置(例如 ts-node ) |
標準庫 | 內置標準庫 | 無標準庫,依賴第三方 |
內置工具 | 格式化、測試、Lint 等 | 依賴第三方工具 |
Oak
。以下是一個簡單的 Deno HTTP 服務器:
import { serve } from "https://deno.land/[email protected]/http/server.ts";
const server = serve({ port: 8000 });
console.log("Server running on http://localhost:8000/");
for await (const req of server) {
req.respond({ body: "Hello, Deno!" });
}
運行命令:
deno run --allow-net server.ts
deno.land/x
提供了大量第三方模塊,且與 Node.js 的兼容性在增強(例如支持部分 npm
包)。Deno 是一個注重安全、簡單性和現代化的 JavaScript/TypeScript 運行時,適合開發者尋求更安全、更標準化的開發體驗。它試圖糾正 Node.js 的歷史包袱,並提供更接近瀏覽器環境的開發方式。如果你想嘗試一個新穎的運行時,Deno 是一個值得探索的選擇。