跳到主要内容
Deno 2.4 发布,带来 deno bundle、字节/文本导入、OTel 稳定版及更多功能
了解更多

Deno Deploy Beta 1

Deno Deploy 是一个多租户 JavaScript 引擎,在全球 25个数据中心运行。该服务将云基础设施与 V8 虚拟机深度集成,允许用户快速编写分布式 HTTPS 服务器。这个新颖的“无服务器”系统是为现代 JavaScript 编程从零开始设计的。

今天我们发布了 Deploy Beta 1。这是未来几个月内将推出的一系列 Beta 版本中的第一个。每个版本都将增加功能并完善编程模型。这些版本最终将发布正式版(General Availability),我们预计这将在2021年第四季度发生。

在过去的八个月里,我们一直在悄然设计这项托管服务,以补充使用开源 Deno CLI 的工作流程。Deploy 既不运行在 AWS Lambda 上,也不使用 Cloudflare Workers;这是一个采用独特设计的新系统。我们鼓励大家忽略粗糙的初始用户界面,探索这个新的 JavaScript 运行时。

Deploy 的目标是成为托管现代服务器端 JavaScript 的最佳平台。

Hello World

在可能的情况下,Deno 提供了浏览器兼容的 JavaScript API。以下 Hello World 示例对浏览器程序员来说应该不陌生

addEventListener("fetch", (event) => {
  event.respondWith(new Response("Hello world"));
});

只需点击几下,Deploy 将提供一个 $NAME.deno.dev 子域名并在全球范围内托管此服务器。客户端将通过 Anycast(通过 IPv4 或 IPv6)路由到我们最近的数据中心。

详情请参阅文档

快速部署

虽然一次性代码更新可以通过 Web UI 完成,但我们预计大多数用户会通过连接 GitHub 仓库,并通过Deploy GitHub 应用来更新代码。

每次推送到仓库都会即时部署到已分配的子域名。在大多数情况下,部署在不到一秒内完成。此外,我们从零开始设计了该系统,以最大限度地减少冷启动时间。

我们相信 Deploy 是目前可用的最快的无服务器系统。我们希望在未来的版本中通过性能基准测试来证实这一大胆声明。

TypeScript、JSX、ES Modules、HTTPS 导入

Deploy 开箱即用地支持 TypeScript、JSX、ES Modules 和远程 HTTPS 导入。无需配置,也无需构建步骤。Deploy 原生支持这些常见的 JavaScript 扩展,就像Deno CLI一样。

import { h } from "https://x.lcas.dev/preact@10.5.12/mod.js";
import { renderToString } from "https://x.lcas.dev/preact@10.5.12/ssr.js";

function App() {
  return (
    <html>
      <body>
        <h1>Hello world</h1>
      </body>
    </html>
  );
}

addEventListener("fetch", (event) => {
  const html = renderToString(<App />);
  event.respondWith(
    new Response(html, {
      headers: { "content-type": "text/html; charset=utf-8" },
    }),
  );
});

BroadcastChannel

BroadcastChannel API 是用于浏览器标签页之间实时通信的 API。这个 API 也出乎意料地非常适合服务器端 JavaScript。

const bc = new BroadcastChannel("chat");
bc.postMessage("This is a test message.");

在 Deno Deploy 中,BroadcastChannel 是一种在不同数据中心区域的边缘工作器之间进行通信的方式。它与 ZeroMQ、RabbitMQ 和 Redis 等软件的解决方案空间有重叠。

BroadcastChannel 在聊天和游戏等实时应用中非常有用。在这个示例中,BroadcastChannel 被用于构建一个简单的聊天系统。你可以在https://chat.denoland.org尝试。

详情请参阅文档

自定义证书

Deploy 只处理加密流量。默认情况下,所有部署都获得一个 deno.dev 子域名。用户还可以将其他域名指向 Deno Deploy 的 Anycast IP 地址;Deploy 将使用 Let’s Encrypt 自动配置 TLS 证书。对于可能希望使用通配符证书的高级用户,Deploy 允许自定义证书。

Fresh:Deno 的 JIT SSR

Fresh 是一个实验性的 Web 框架,可让您快速构建无需构建步骤的高度动态项目。Fresh 前所未有地拥抱同构 JavaScript。编写一个 JSX 组件,让它在边缘即时渲染,然后用客户端 JS 增强它以获得出色的交互性。

Fresh 没有构建步骤——您只需编写代码并将其部署到 Deno Deploy,所有后续操作都由框架处理。

  • 无需构建步骤
  • 零配置
  • 边缘 JIT 渲染
  • 轻量级(示例运行时 JS 仅 0-3KB)
  • 可选的客户端水合
  • 开箱即用的 TypeScript 支持
  • 类似 Next.js 的文件系统路由

在此处阅读更多关于 Fresh 和其他新兴 Deploy 框架的信息:此处

更多内容即将推出

在 Beta 1 期间,Deno Deploy 对所有用户免费。如果您试用它,请通过在我们的反馈仓库中提交 issue 来告诉我们您的想法。

我们计划在未来几个月内随着功能的增加,对 Deno Deploy 进行一系列 Beta 版本发布。我们预计 Deno Deploy 将于2021年末进入正式发布阶段(General Availability)。