作者:
Deno 团队
译者:
林语冰
资源:Deno 官方博客[1]
免责声明:活人翻译,略有删改,仅供粉丝参考!
00. 导读
大家好,我是大家的林语冰。
Deno 是 Node 之父 重新发明的 Node 替代品,一个用于 JS 和 TS 开发的零配置工具链和一体化运行时。
Deno 现已成为 GitHub 上排名第二的 Rust 项目,仅次于 Rust 语言本身。👍
Deno 1 发布 4 年后,Deno 团队官宣 Deno 第 2 个主版本正式发布,主要包括:
- 向后兼容 Node + npm,原生支持排版,无需安装 Prettier
- Deno 自己化身包管理器,不像 Node 依赖 npm / yarn
- 内置高质量标准库,无需安装 lodash
- 支持 workspaces(工作区)和 monorepo,无需依赖 pnpm
- 支持 LTS 发布,降低生产维护成本
- JSR 允许直接发布 JS / TS 模块,自动生成文档
01. 向后兼容,向前求索
Deno 2 向后兼容 Node + npm,你不仅可以在现有 Node 项目中直接运行 Deno,还可以逐步采用 Deno 的一体化工具链。
举个栗子:
Deno 原生支持 ESM,如果你想摆脱混乱的 package.json
和 node_modules
,你可以直接使用 npm:
说明符导入 npm 包。
如果当前项目没有 package.json
和 node_modules
,Deno 会把包安装到 全局缓存。这允许你在单文件中编写需要 npm 依赖的程序,而不需要依赖清单或 node_modules
。
对于较大的项目,依赖清单可以简化依赖管理。先将 npm:
说明符放入 deno.json
的导入映射中:
然后就可以省略 npm:
说明符和版本号,导入模块的简化名称:
02. Deno 作为包管理器
Deno 2 可以轻松安装和管理依赖项,不像 Node 依赖 npm 或 yarn 等。
deno install
可以快速安装依赖。如果你有 package.json
,它会创建 node_modules
,否则 Deno 会将所有依赖缓存到全局缓存。
deno install
比使用 冷缓存 的 npm 快 15%,比使用 热缓存 的 npm 快 90%。
03. JSR 注册表
今年早些时候,Deno 团队推出了 JSR[2] - 一个现代开源 JS 注册表。
JSR 原生支持 TS,你可以直接把 TS 源码发布为模块,不需要先把 TS 编译为 JS,构建完成后再发布。
JSR 还会根据 JSDoc 风格的注释自动生成文档,也可以将 TS 转换为 .js
和 .d.ts
文件。
04. 稳定版标准库
虽然 npm 有 200+ 万个模块,但它们的质量良莠不齐。
Deno 标准库[3] 由几十个经过严格审核的实用工具模块组成。
举个栗子,Deno 标准库内置了类似 lodash
的集合操作,无需手动安装 lodash
即可使用。
Deno 标准库模块 | npm 包 |
---|---|
@std/collections | lodash |
@std/testing | jest |
@std/expect | chai |
... | ... |
05. workspaces 和 monorepo
Deno 2 还支持 workspaces(工作区),这是管理 monorepo 的强大方案。
只需使用 deno.json
中的 workspace
属性列出成员目录:
这些成员可以拥有单独的依赖、linter 和排版配置等。
Deno 还支持 npm workspaces,允许你创建混合的 Deno-npm monorepo,其工作区成员要么是 package.json
,要么是 deno.json
:
你还可以运行 deno publish
直接把工作区模块发布到 JSR,这无需你手动确定发布顺序。
06. 长期支持版
Deno 每周会发布一个 补丁版,每 6 周会发布一个 次版本,大型团队生产构建时维护成本较高。
为此,从 Deno 2.1 开始,Deno 支持 LTS(长期支持)发布,类似于 Node 的更新渠道。
LTS 将接收 6 个月向后移植的关键补丁,6 个月后,Deno 会根据最新稳定版创建新的 LTS 分支,确保生产环境的稳定和可靠。
07. Deno 性能惊人
以下是若干展示 Deno 优势的基准测试:
高潮总结 👇
Deno 2 提供了零配置、一体化的现代工具链,向后兼容 Node 和 npm 的同时,比 Node 更安全:
- Deno 自己能够管理依赖,支持 monorepo 和 workspaces,无需依赖 pnpm
- Deno 内置支持排版,无需安装 Prettier
- Deno 支持稳定的标准库,无需安装 lodash
- JSR 和 npm 注册表一样,但支持直接发布 TS 模块
希望 Deno 能继续优化 lint 和测试运行器的功能。👍
我是 大家的林语冰
👨💻,欢迎持续 关注 我,随时了解海内外前端开发的最新情报。
谢谢的大家点赞、留言和友情转发,你的支持是我们保持更新的最大动力,我们下期再见~👍
参考文献
[1] Deno 官方博客: deno.com/blog/v2.0
[2] JSR: jsr.io
[3] Deno 标准库: github.com/denoland/st…