跳至主要内容
Deno 2 终于来了 🎉️
了解更多

简化 JavaScript

Deno 是现代 Web 的开源 JavaScript 运行时。

安装 Deno v2.0.4

curl -fsSL https://deno.land/install.sh | sh
什么是 Deno?

Deno 是现代 Web 的开源 JavaScript 运行时。

基于 Web 标准,具有零配置 TypeScript、无与伦比的安全性以及完整的内置工具链。
  • 评分
    90k+
    GitHub 上的星标
  • 社区
    200k+
    活跃的 Deno 用户
  • 生态系统
    2M+
    社区模块
  • Slack
  • Netlify
  • GitHub
  • Supabase
  • Salesforce
  • Spotify
  • Stripe
  • Bank of America

企业版 Deno

现在提供对 Deno 运行时的企业支持

原生 TypeScript 支持

Deno 运行时原生支持 TypeScript、JSX 和现代 ECMAScript 功能,无需配置。
interface Person {
  name: string;
  age: number;
}

function greet(person: Person): string {
  return "Hello, " + person.name + "!";
}

const alice: Person = {
  name: "Alice",
  age: 36
};

console.log(greet(alice));

内置的现代语言功能

基于 Web 标准

只要有可能,Deno 就会在服务器上实现 Web 标准 API。Deno 积极参与 TC39WinterCG,以帮助推动 Web 的发展。

功能齐全

构建、测试和部署应用程序所需的必要工具都包含在内。

代码 linter

Deno 附带内置代码 linter,可帮助您避免错误和代码腐烂。

了解更多
$ deno lint --watch

测试运行器

Deno 将测试运行器和断言库作为运行时和标准库的一部分提供。

了解更多
// server_test.ts
Deno.test("1 + 2 = 3", () => {
  const x = 1 + 2;
  console.assert(x == 3);
});
$ deno test server_test.ts

独立可执行文件

从您的 Deno 程序立即创建独立可执行文件。它甚至支持为其他平台交叉编译!

了解更多
Deno.serve(req => new Response("Hello!"));
$ deno compile --allow-net server.ts

Compile file:///tmp/server.ts to server
$ ./server
Listening on http://localhost:8000/

代码格式化程序

Deno 的内置代码格式化程序(基于 dprint)美化 JavaScript、TypeScript、JSON 和 Markdown。

了解更多
$ deno fmt --line-width=120

默认情况下安全

使用 Deno 运行的程序在明确启用之前没有文件、网络或环境访问权限。

防止供应链攻击

不必担心 npm 模块引入意外漏洞。Deno 默认情况下限制对文件系统、网络和系统环境的访问,因此代码只能访问您允许访问的内容。

其他运行时

$ node random.js
Executing random.js...
🚨 File system compromised!

Deno

$ deno random.js
⚠️ Deno requests write access
Allow? [y/n/A]
$ n
❌ Denied write access
Exited

向后兼容 Node.js

Deno 的 Node.js 兼容性层意味着您可以将 Node 生态系统的精华带到 Deno 中。
server.ts
import express from "npm:express@4";

const app = express();

app.get("/", function (_req, res) {
  res.send("hello");
});

app.listen(3000, () => {
  console.log("Express listening on :3000");
});
$ deno run --allow-net --allow-read --allow-env server.js

与数百万个 npm 模块兼容

在您的 Deno 项目中使用 npm: 指定符包含来自 npm 的模块。

高性能网络

对以下内容提供开箱即用支持
  • HTTPS(加密)
  • WebSocket
  • HTTP2
  • 自动响应主体压缩

越大越好

吞吐量,每秒请求数

Deno
200059
Node
95879

为云构建

无论您使用闪电般快速的 Deno Deploy 部署还是在其他云提供商上部署,Deno 都能简化您的体验。

Deno 运行在

使用 Deno 云产品更进一步

基于 Deno 构建的产品,可帮助您以任何规模轻松安全地部署 TypeScript 和 JavaScript。

Deno Deploy

面向希望以最简单的方式托管 Web 应用程序和 API 的开发人员

  • 完全托管的无服务器解决方案
  • 全球分布式
  • 内置的键值数据库、队列、cron 等
  • 直接与 GitHub 集成

Deno 子托管

面向希望安全运行用户代码的 SaaS 公司

  • 安全的沙箱化函数
  • 自动扩展和配置
  • 全球分布式
  • 通过简单的 API 管理

Fresh 的 Web 框架

Fresh 是一个为 Deno 构建的服务器端渲染 Web 框架,它使用 Preact 来实现超快速度和即时生产力。

快速构建快速网站

将路由编写为您已经熟悉和喜爱的 JSX(或 TSX)组件,Fresh 默认情况下会处理动态服务器端渲染。
/routes/index.tsx
export default function HomePage() {
  return (
    <div>
      <h1>HTML fresh from the server!</h1>
      <p>
        Delivered at
        {new Date().toLocaleTimeString()}
      </p>
    </div>
  );
}
/islands/Counter.tsx
import { useSignal } from "@preact/signals";

export default function Counter() {
  const count = useSignal<number>(0);

  return (
    <button onClick={() => count.value += 1}>
      The count is {count.value}
    </button>
  );
}

减少 JavaScript 发布量

基于岛屿的架构使您可以选择仅使用所需的 JavaScript,从而实现绝对最小的运行时开销。

我们充满活力的社区

“我知道这会发生!Deno 正在真正构建最快速、最安全和最可个性化的 JS 运行时!”
Manu (Qwik)
“Deno 的安全模型非常适合这种类型的脚本。从互联网上的某个随机人那里运行脚本?它只请求对 CWD 的读取访问权限,然后请求对要写入的文件的访问权限。👏”
Wes Bos
“我真的认为 Deno 是最简单、功能最强大的 JS 运行时。URL 导入被低估了。”
Atalocke
“Deno 中的 npm 包 👀这对我们这些在边缘构建的人来说是一个令人兴奋的发展。”
Jason Lengstorf
“Deno 速度很快,毫无疑问。#denoland”
资金不足的势利眼
“Deno:我必须使用浏览器 API,因为它们无处不在,而我的目标运行时就是无处不在(Web)。试图镜像服务器端浏览器 API 的运行时使我的生活最轻松。”
Taylor Young
“Deno 太棒了。我用它来提高 JavaScript 和 TypeScript 的水平,它是最简单的入门方式。它们的工具比所有通常的 Node 堆栈简单 100 倍。”
Stefan Arentz

准备开始使用 Deno 吗?