Deno Deploy Beta 2
Deno Deploy 是一个多租户 JavaScript 引擎,在全球 25 个数据中心运行。该服务将云基础设施与 V8 虚拟机深度集成,允许用户快速编写分布式 HTTPS 服务器脚本。这种新颖的“serverless”系统从头开始为现代 JavaScript 编程而设计。
今天我们发布 Deploy Beta 2。这是未来几个月将发布的一系列 Beta 版本中的第二个。每个版本都将增加功能并改进编程模型。这些版本最终将在我们估计于 2021 年第四季度发布的正式版本公告中达到高潮。
在过去的八个月中,我们一直在悄悄设计这项托管服务,以补充使用开源 Deno CLI 的工作流程。Deploy 不在 AWS Lambda 上运行,也不使用 Cloudflare Workers;这是一个具有独特设计的新系统。我们鼓励人们忽略最初粗糙的 UI,探索这个新的 JavaScript 运行时。
Deploy 的目标是成为托管现代服务器端 JavaScript 的最佳场所。
Deno.readFile
加载
静态文件可以使用 自 Deploy Beta 1 发布以来,许多用户已经使用 Deploy 创建了 API 端点和边缘代理。许多其他用例需要静态资源,例如图像、markdown 和 CSS。之前我们建议用户通过向其 GitHub 存储库发出出站 fetch()
请求并代理内容来加载静态内容。
Beta 2 现在通过添加 Deno.readFile
API 大大简化了这一点。此 API 可用于加载存储在部署链接的 GitHub 存储库中的静态文件。
const image = await Deno.readFile("./static/logo.png");
addEventListener("fetch", (e) => {
e.respondWith(
new Response(image, {
headers: { "Content-Type": "image/png" },
}),
);
});
您可以在文档中阅读有关 Deno.readFile
API 的更多信息。
因为 Deploy 现在有一个文件系统,所以所有新项目的 import.meta.url
都已更新为 file://
URL。现有项目将继续像以前一样工作。要使用新行为,请创建一个新项目。
Deno.listen
和 Deno.serveHttp
我们正在努力使 Deno Deploy 和 Deno CLI 更加紧密地结合在一起,以便在一个系统上的代码可以与另一个系统透明地互操作。以前,在 Deploy 中处理传入请求的唯一方法是使用 addEventListener("fetch", cb)
。我们现在添加了使用 CLI 兼容调用 Deno.listen()
和 Deno.serveHttp()
处理请求的功能。这使得像 Oak 这样的 Web 框架能够透明地支持 Deploy。
const listener = Deno.listen({ port: 0 });
console.log("listening on port", listener.addr.port);
async function handleConn(conn) {
const httpConn = Deno.serveHttp(conn);
for await (const e of httpConn) {
e.respondWith(handler(e.request, conn));
}
}
function handler(_request, conn) {
return new Response("ok", {
headers: {
"x-localaddr": `${conn.localAddr.hostname}:${conn.localAddr.port}`,
"x-remoteaddr": `${conn.remoteAddr.hostname}:${conn.remoteAddr.port}`,
},
});
}
for await (const conn of listener) {
handleConn(conn);
}
崩溃报告
更新 2023 年 2 月 7 日:该功能在 Deploy 中不再可用。
Deploy 已经具有流式日志支持,允许实时查看来自全球实例的输出。但是,当 Deno Deploy 实例崩溃时,可能很难在日志中发现,特别是对于流量大的项目。因此,我们添加了持久的“崩溃报告”,其中包含任何未处理异常之前的 100 行日志。
新设计
Deploy 仪表板网站已经进行了完整的视觉重新设计,具有更好的导航和可访问性。

接下来是什么
我们将在即将到来的 Beta 版本中继续改进 Deploy,最终将在 2021 年第四季度发布正式版本。预计下一个版本将解决长期要求的缓存功能、CLI 互操作性和更好的入门流程。