Deno 2.0 临近发布:四年磨一剑,但生态是最大挑战

科技   2024-10-01 15:00   辽宁  

作者 | Tim Anderson
译者 | Sambodhi
策划 | Tina

Deno 2.0 版本(JavaScript 和 TypeScript 运行时)的全部功能已经完成,候选版本也已推出,距 2020 年 5 月 Deno 1.0 发布已有四年半;然而,与 Node.js 相比,该项目的采用率仍然较低,这表明它在 TypeScript 和 ECMAScript 模块上的大赌注尚未获得回报。

在 Deno 2.0 版中,一些关键 API 不再被标记为不稳定。其中包括 WebGPU、用于调用本地代码的 FFI(外部函数接口)函数,以及用于配合自定义证书或代理连接使用的 Fetch API 的 createHttpClient。

新的主版本是引入破坏性变更的好机会,在 Deno 2.0 中,旨在提高与浏览器中运行的代码兼容性的全局性 window 变量已被删除。这导致了一些专门检查该变量以确定代码是否在浏览器中运行的库会出现问题。

在候选版本的博文中,还列出了从 1.0 迁移到 2.0 时需要关注的已删除 API,同时迁移指南也已发布。

Deno 2.0 通过支持 Node 使用的 process 全局变量来提高与 Node.js 的兼容性,这意味着更多为 Node 编写的库可以无缝运行。此外,Deno 2.0 还对 CommonJS 提供了更好的支持,特别是在开发人员自己编写的代码中,而非在库中使用时。现在支持更多的 Node.js API,进一步提升了与 Node.js 库的兼容性。

依赖管理已被重新设计,权限系统也进行了调整,以区分操作系统权限和 Deno 权限。

Deno 2.0 删除了 bundle 子命令,因为它未能满足开发者的预期。它并不是一个可定制的 bundler,而是“一个简单的工具,用于将多个文件串联成一个文件,以便于分发”。未来的 bundler 可能会具备更复杂的功能。

最新版本的 TypeScript 5.6 将随 Deno 2.0 一起发布。

Deno 是由 Node.js 的创建者 Ryan Dahl 发明的。在 1.0 发布时,他提到Node.js 的妥协和错误可以追溯到 2009 年,部分原因是“Node 不得不发明一些概念,这些概念后来被标准组织采纳,并以不同的方式添加到语言中”。Deno 的目标是更简单、更标准,例如采用 ECMAScript 模块系统(ESM),而不是 Node 使用的 CommonJS。其他关键变化包括对原生 TypeScript 的支持,以及不再要求使用 node-modules 文件夹(Node 用于存放依赖项的文件夹)。

自那时起,Deno 吸引了大量的用户,但仍远低于 Node.js。根据 StackOverflow 2024 年的调查,40.8% 的开发人员使用 Node.js,而 Deno 的使用率仅为 1.9%,这表明 Deno 2.0 的许多功能都集中在提高与 Node.js 的兼容性上,这表明 Dahl 和他的团队低估了这一点的重要性;这也意味着他们在这方面花费了大量精力,而不是在开发更具创新性的功能上。

Deno 的竞争对手 bun 自一开始就支持 Node 和 CommonJS 的兼容性,因此获得了更多关注;而 Node.js 项目本身也开始增加对 TypeScript 的支持,这可能会消除 Deno 的一个关键差异点。

原文链接:

https://devclass.com/2024/09/23/deno-version-2-0-is-nearly-done-but-after-over-4-years-the-projects-big-bets-have-yet-to-pay-off/

今日好文推荐

React服务器组件会毁了React吗?

Vue.js:极速选手还是高风险赌徒?

“大前端已死?”没有永远的技术红利,但应具备重拾信心的勇气

前端开发的“内卷”终结者:是时候扔掉 JavaScript 框架了!

会议推荐

10 月 18 日-19 日,QCon 全球软件开发大会将在上海举办。从云原生工程、架构、线上可靠性、大前端、技术管理等经典内容,到 AI Agent、AI Infra、RAG 等大热的 AI 话题,60+ 资深专家共聚一堂,深度剖析相关落地实践案例,共话前沿技术趋势。大会火热报名中,详情可联系票务经理  17310043226 咨询。

前端之巅
InfoQ大前端技术社群:囊括前端、移动、Node全栈一线技术,紧跟业界发展步伐。
 最新文章