Deno 1.40 发布:Temporal API、简化导入与开发者工具全面升级指南(2025)

作者:API传播员 · 2025-09-20 · 阅读时间:4分钟
Deno 1.40 引入了 Temporal API,这是一个强大的日期和时间操作功能,同时支持最新的装饰器语法。此版本还新增了对 .filename 和 .dirname 属性的支持,简化了依赖管理,并为未来的 Deno 2 做好了准备。

一. Deno 1.40 发布亮点概览

Deno 1.40 是该平台发展历程中的重要版本,带来了多项核心功能更新与改进:

  • Temporal API 支持:提供高级日期和时间操作功能
  • 装饰器语法改进:增强代码表达力
  • 弃用与稳定化措施:为 Deno 2 做准备
  • 开发者工具优化:类型检查、自动导入和诊断打印改进

二. Temporal API 的引入

Temporal API 是 JavaScript 生态中的重要提案,旨在提供更强大的日期和时间操作功能。在 Deno 1.40 中,您可以通过启用 --unstable 标志来使用 Temporal API。

此外,Deno 1.40 还新增了对 import.meta.filenameimport.meta.dirname 属性的支持,类似于 CommonJS 中的 __filename__dirname,用于提供模块文件的绝对路径和目录路径:

  • import.meta.filename:返回当前模块文件的绝对路径
  • import.meta.dirname:返回当前模块文件所在目录

示例:

在 Unix 系统中:

$ deno run /dev/my_module.ts
/dev/my_module.ts
/dev/

在 Windows 系统中:

C:\> deno run C:\my_module.ts
C:\my_module.ts
C:\

注意:这些属性仅适用于本地模块,远程模块(通过 http://https:// 导入)返回 undefined


三. 更简单的 deno.json 导入配置

Deno 1.40 对 deno.jsonimports 字段进行了简化。例如,之前从 npm 导入 preact 需要手动配置子路径导出,现在可直接导入 preact 及其子路径(如 preact/hooks),大幅提升开发效率。


四. 弃用功能

为了优化平台性能和简化 API,Deno 1.40 弃用了部分功能:

  • Deno.serveHttp() → 被更快的 Deno.serve() 替代
  • Deno.metrics() → 转向命令行标志或其他 API(如 --strace-ops
  • 流函数 → 逐步过渡到 Web 流,可通过标准库访问
  • Deno.customInspect → 改用 Symbol.for("Deno.customInspect")
  • 资源 ID(rid)相关 API → 未来将由原生对象替代,如 Deno.isatty()Deno.close()

这些调整为 Deno 2 的发布奠定了基础,同时给予开发者迁移时间。


五. 新的稳定功能

Deno 1.40 还稳定了以下功能:

  • Web API:支持 rejectionhandled 事件,改进未处理 Promise 拒绝的处理
  • Node.js API:修复部分兼容性问题,如 ChildProcess.send()

六. 改进的开发者工具

Deno 1.40 对开发者工具进行了升级:

  1. 更智能的类型检查:自动包含稳定和不稳定 API 类型定义
  2. 改进自动导入完成:修复解析错误,使导入映射更准确
  3. 新的诊断打印工具:为 deno-lintdeno-doc 提供更清晰诊断信息
  4. 新增 linter 规则:默认启用 "no-window",可添加注释解释忽略警告

七. 不稳定功能的管理

Deno 1.40 开始弃用通用 --unstable 标志,采用更细粒度标志(如 --unstable-webgpu),为 Deno 2 提供更清晰的功能控制。类型检查工具也改进了对不稳定 API 的提示和支持。


八. 总结

Deno 1.40 引入了强大的 Temporal API、简化导入配置,并通过弃用与稳定化措施为未来 Deno 2 打下基础。开发者应尽快升级以体验更高效、更安全的开发环境。

原文链接: https://deno.com/blog/v1.40