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

Deno Deploy Beta 1

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

今天我们发布了 Deploy Beta 1。这是未来几个月内将发布的一系列 Beta 版本中的第一个。每个版本都会添加功能并改进编程模型。这些版本最终将以我们预计在 2021 年第四季度发布的正式发布公告结束。

在过去的八个月中,我们一直在默默地设计这项托管服务,以补充使用 开源 Deno CLI 的工作流程。Deploy 不在 AWS Lambda 上运行,也不使用 Cloudflare Workers;这是一个具有独特设计的新系统。我们鼓励人们忽略粗略的初始 UI,探索这个新的 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 App,并通过 Deploy Github App 更新代码。

对存储库的每次推送都会部署到瞬时配置的子域。在大多数情况下,部署在不到一秒的时间内完成。最重要的是,我们从头开始设计了该系统,以最大限度地减少冷启动时间。

我们相信 Deploy 是目前速度最快的无服务器系统。我们希望在将来的版本中通过性能基准来证实这一大胆的主张。

TypeScript、JSX、ES 模块、HTTPS 导入

Deploy 默认支持 TypeScript、JSX、ES 模块和远程 HTTPS 导入。无需配置,也不需要构建步骤。Deploy 本机理解这些 JavaScript 的常用扩展,就像 Deno CLI 一样。

import { h } from "https://x.lcas.dev/[email protected]/mod.js";
import { renderToString } from "https://x.lcas.dev/[email protected]/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

The 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 渲染
  • 非常小(示例为 0-3KB 的运行时 JS)
  • 可选的客户端端水合
  • 开箱即用的 TypeScript
  • 类似于 Next.js 的文件系统路由

阅读有关 fresh 和其他新兴 Deploy 框架的更多信息 此处

更多内容即将推出

Deno Deploy 在 Beta 1 期间 对所有用户免费。如果您试用过它,请在我们的 反馈存储库 中打开一个问题,告诉我们您的想法。

我们计划在未来几个月内向 Deno Deploy 发布一系列 Beta 版本,因为我们会添加功能。我们预计 Deno Deploy 将在 2021 年底进入正式发布阶段。