Deno 1.35 发布:构建 Web 服务器的快速便捷方式


2023 年 7 月 5 日,Deno 团队发布了 Deno 1.35 版本。此次更新的目的是使程序开发尽量简单,因此运行时内置强大的工具链、原生 TypeScript 支持和 Web 标准 API,可以跳过配置和学习新 API,并立即开始工作。

此次版本更新带来如下改进:

  • Deno.serve() API 现已稳定,提供一种快速便捷的方式来构建 Web 服务器。Deno.serve() 允许开发人员使用一句代码设置 Web 服务器:
Deno.serve((req) => new Response("hello world"));

相比之前的 Deno.serveHttp() API,Deno.serve() API 使用 Web 标准的 Request 和 Response 对象,可无缝配合 fetch()、Web 流等其他标准 API。

此外,Deno.serve() 提供可观的性能改进。Deno 团队的基准测试显示,使用 Deno.serve() 构建的 Hello World 服务器的吞吐量是 Node.js 服务器的两倍,具有更好的尾部延迟和更高效的内存使用。

  • 改进 npm 支持度。Deno 的 npm 兼容性允许使用熟悉的 npm 包,降低供应链风险。

此次月度版本更新对 httphttpszlib 模块的兼容性进行了大幅改进。下面列出了对 Node.js 内置模块的完整更改:

  • fs.FileHandle
  • http.ClientRequest.upgrade
  • http.IncomingMessageForClient.complete
  • http2
  • https.createServer
  • process.reallyExit
  • v8.setFlagsFromString
  • zlib.brotliCompress
  • zlib.brotliCompressSync
  • zlib.brotliDecompress
  • zlib.brotliDecompressSync
  • zlib.createBrotliCompress
  • zlib.createBrotliDecompress

每次发布都对更多 npm 包进行支持。这次发布对这些 API 的改进使得以下重要 npm 包在 Deno 中可以正常工作:

  • npm:astro
  • npm:aws-sdk
  • npm:axios
  • npm:discord.js
  • npm:node-fetch
  • npm:parcel
  • npm:puppeteer
  • npm:redis

下个月,Deno 团队将专注于使 @grpc/grpc-jsgoogle-cloud-node 以及各种数据库驱动程序在 Deno 中工作。如果发现某些 npm 包无法工作,请在 denoland/deno 仓库提交 issue 报告。

此外,Deno 1.35 还包括 Deno 命名空间的 API 添加、Web API 更改、语言服务器改进以及标准库的变更等其他许多改进和修复。

最终,Deno 1.35 配备了 V8 11.6 和 TypeScript 5.1.6。


相關推薦

2022-09-12

开发者会将 0 KB 的 JS 发送给客户端。因为大多数渲染在服务器上完成,客户端只负责重新渲染交互性的小模块。这是一个开发者明确选择客户端渲染特定组件的模型。早在 2020 年,Jason Miller 在他的 Islands Architecture 博客文章

2022-06-14

应用。 Fresh 核心是路由框架和模板引擎的组合,支持在服务器上按需渲染页面。除了在服务器中提供的即时 (JIT) 渲染之外,Fresh 还提供了一个接口,用于在客户端上无缝渲染某些组件,以实现最大的交互性。该框架使用 Preact

2022-06-30

开发者会将 0 KB 的 JS 发送给客户端。因为大多数渲染在服务器上完成,客户端只负责重新渲染交互性的小模块。这是一个开发者明确选择客户端渲染特定组件的模型。早在 2020 年,Jason Miller 在他的 Islands Architecture 博客文章中就

2023-03-24

eScript 的运行时,它使用 V8 并以 Rust 构建。 Deno 1.32 正式发布,值得关注的更新包括: 增强 Node.js 的兼容性 Deno 在提高与 Node.js 的兼容性方面继续取得重大进展,提供了更顺畅的整体开发者体验。这个版本的主要改进包括:

2023-07-20

量级。 Fresh 核心是路由框架和模板引擎的组合,支持在服务器上按需渲染页面。除了在服务器中提供的即时 (JIT) 渲染之外,Fresh 还提供了一个接口,用于在客户端上无缝渲染某些组件,以实现最大的交互性。 该框架使用 Prea

2023-04-08

有以下特性: 原生支持 TypeScript 无构建步骤 支持服务器端渲染和孤岛架构 内置强大的工具,例如 formatter、 linter 和 test runner 支持 npm specifiers Fresh 是面向 JavaScript 和 TypeScript 开发者的全栈现代 Web 框

2022-10-29

Deno 1.27 已正式发布。 主要变化 改进语言服务器 /IDE 改进 npm 兼容性 新增navigator.language Web API 改进 deno task 升级检查器 修改 Deno APIs 升级 deno lint V8 10.8 改进 Node.js 兼容性 修改标准库 API

2023-12-16

态导入模式,例如使用模板字符串的导入语句。 Deno语言服务器(LSP)的增强 为了提升Deno语言服务器的性能,1.39版本引入了显著的性能改进。这包括优化了快速打字期间大量请求的处理,使在IDE中的编辑体验更为流畅。此外

2023-11-04

新:新的 --unstable-hmr flag 将检测变更,重新加载服务器,同时保留状态。 改进 Node.js 兼容性:现在从 Node 迁移时,使用 Deno 会更加容易。因为可以使用所选择的 npm 包管理器。通过 npm 安装 npm 模块并使用 Deno 运

2023-06-17

,如今 Fresh 1.2 正式发布,亮点功能如下: islands 是在服务器和客户端都渲染的独立组件,是 Fresh 设计的核心。如今可以在 island props 中传递 Preact、Uint8Arrays 和循环数据 向 island 传递 JSX,并在彼此之间嵌套 islands 对npm:指

2023-09-13

能会带来一些令人兴奋的新特性。 作者还论述了使用便捷性与安全等方面,最后结论比较中肯客观: 如果成熟度、庞大的生态以及社区支持是你最重视的,那么 Node.js 仍然是一个强有力的竞争者。 如果你寻求一个现代

2023-05-27

于经常使用 IP 地址而不是域名的 Kubernetes pod,以及需要服务器 IP 地址以避免对名称解析的循环依赖的 HTTPS/TLS 上的 DNS 非常有用。 在 Deno v1.34 中,任何使用 TLS 的 API 都支持使用 IP 地址。例如: const resp = await fetch("https://1.1.1.1

2022-06-18

Deno 1.23 已发布,值得关注的更新包括: 默认不进行类型检查 当要求执行一个程序时,Deno 总是运行一个类型检查。然而,评估和类型检查是完全不同的操作,涉及完全不同的编译器,每个编译器的执行速度也完全不同。评估代

2022-08-29

几个版本中改善兼容性层和用户体验。 新的实验性 HTTP 服务器 API Deno 1.25 引入了一个新的实验性 HTTP 服务器,旨在提供一流的 HTTP 性能。我们的基准显示,与 Node.js 相比,每秒的 hello-world 请求性能提高了 4 倍,与我们现有的