写点什么

Node 之父着急宣布:Deno 将迎来重大变革,更好地兼容 Node 和 npm 包

  • 2022-08-17
    北京
  • 本文字数:2172 字

    阅读完需:约 7 分钟

Node之父着急宣布:Deno将迎来重大变革,更好地兼容Node和npm包

或许是因为受到来自近日大火的「Bun」的压力,Deno 官方在 8 月 15 日发布了一篇名为《Deno 即将发生重大变化》的博文

Deno 的焦虑


2018 年,Node.js 的创始人 Ryan Dahl 在 JSConf EU 上做了主题为 “10 Things I Regret About Node.js” 的分享,Ryan 回顾了在他看来当初开发 Node.js 时留下的十大遗憾。由于 Node.js 现在已经广泛应用于各个领域,为了保证兼容性,对 Node.js 底层进行大规模改造已经不现实。于是 Ryan 宣布他决定开发一个全新的 JavaScript 运行时以解决当初的种种缺陷,这便是 Deno 的由来。


Deno 由以下技术构建:


  • Rust(Deno 的核心是用 Rust 编写的,Node 用 C ++编写)

  • Tokio(用 Rust 编写的事件循环)

  • TypeScript(Deno 支持 JavaScript 和开箱即用的 TypeScript)

  • V8(google 在 Chrome 和 Node 等中使用的 JavaScript 运行时)


不过,尽管 Deno 宣称解决了一些长期困扰开发者的老大难问题(把 es-modules 设定成默认值,引入了第一方 TypeScript 支持(无需在发布前转译 npm 模块等等),但在一些用户看来,Deno 在解决老问题的同时,也引入了不少新问题。


其中,生态是 Deno 主要被诟病的问题。首先,Deno 对包解析和语法做的变更过于大刀阔斧,导致没法跟原有 npm 生态系统兼容。换言之,Deno 需要培养起自己的全新库生态。虽然 Deno 慢慢开始支持一些早期库,但一个项目的影响力会直接决定它的发展上限。当然也有一些变通方法,比如把 npm 包转换成 Deno 包的 CDN,但也有人觉得这不是什么好招。


此外,Deno 还有着不少暴露其半成品身份的问题,比如缺少 package.json。无论是从模块解析的角度来看,还是从缺少 manifest 文件出发,Deno 都不允许开发者为自己的包编写可扩展元数据。GoLang 甚至专门为此引入了 go.mod。

即将有重大变革


8 月 15 日,Deno 官方发布了一篇名为《Deno 即将发生重大变化》的博文。这个时机点难免让人将其与前阵子大火的「Bun」联想起来。


Bun 是今年才发布的前端工具链项目,作者是前 Stripe 开发人员 Jared Sumner 。不同于 Node.js 和 Deno 使用的 V8 引擎,Bun 使用 JavaScriptCore 引擎,并用 Zig 编程语言编写。


据悉,Bun 最初只是一种 JavaScript webserver,但在后续发展中逐渐酝酿出了全面颠覆 JS 生态系统的野心,它的性能表现优异,其 React 的服务器端渲染速度据称是 Node 或 Deno 的三倍以上。


面对这样的强劲新对手,Deno 也迫不及待要预告自己的新动态和进展。


根据官方博文,Deno 这次想要对外强调的进展包括:


  • 团队一直在通过更新降低 Deno 对 npm 包的导入门槛,预计未来三个月内,绝大多数 npm 包都能在 Deno 中顺畅运行。

  • Deno 目标是成为最快的 JavaScript 运行时。这里向新用户稍做解释,Deno 的下个版本将包含新的 HTTP 服务器,这也是有史以来速度最快的 JavaScript Web 服务器。

  • 考虑到不少大型企业和公司初创团队都在使用 Deno,其将面向这些商业用户提供办公时段专用套餐。


下面我们一同看看 Deno 具体的变化是什么样的:

Node 与 npm 兼容性


在未来三个月内,有 80%到 90%的 npm 包都能够顺畅运行在 Deno 当中。具体实现方式是使用特殊的 npm URL,具体示例:


import express from "npm:express@5";
复制代码


未来三个月内,大多数 npm 模块都能通过上述方式作为依赖项引入。用户将告别 node_modules 文件夹、告别 npm install;这些包将被自动下载至 Deno 缓存内。从类型检查到 LSP、再到 deno vendor,所有 Deno 工具都可以使用这些 npm 包。

最快的 JavaScript 运行时


官方称 Deno 将成为速度最快的 JavaScript 运行时,没有之一。他们 100%相信,Deno 自身的技术堆栈、V8 再加上 Rust 完全可以把这个目标变成现实。


Deno 的 HTTP 服务器也在经历大改,“现在我们向大家正式宣布,它就是有史以来速度最快的 JavaScript Web 服务器。我们整个运营系统的优化度越来越高,能够直连 V8 Fast API 以通过 JS 快速调用本机代码。同样地,我们的外部函数接口(FFI)也迎来了振奋人心的更新。请注意,我们可不是在针对少数极端情况进行优化,而是真正实现了整体实践层面的性能提升。”


Deno 表示,预计在今年夏天结束之前,相关成果就将正式发布、供大家上手体验。

支持企业用户


Deno 指出,在最近进行的调查中,发现近半数 Deno 活跃用户会在工作当中使用 Deno,其中包括不少大企业的开发者和初创公司创始人。未来,团队希望将为在商业环境中使用 Deno 的朋友们提供免费办公时段套餐。


因为 Deno 团队的规模还相当有限,所以呼吁相关用户先填写表单,需求将根据大家的项目规模和紧迫性进行优先级排序。表格填写地址:https://docs.google.com/forms/d/e/1FAIpQLSewMCz1wB8SMZI8n7xUVeH00tBo5xLBGmj26-QVjjhQ4FfZlQ/viewform

流畅的开发者体验


在接下来几个月中,Deno 将陆续发布后续更新,包括全部第三方 Deno 代码实现全文符号搜索,以及自动为 JavaScript 和 TypeScript 项目生成文档等。下图为功能预览界面:



最后,Ryan Dahl 表示对 Deno 过去几年中建立的庞大生态系统和良好的支持成效感到自豪。目前,Deno 在 GitHub 上的下载量已突破 410 万次,月活跃用户高达 25 万,项目采用率还在持续提升。


“哇,对兼容 npm 的 Deno 非常感兴趣!我认为这将消除进入 Deno 的巨大障碍。”


“一旦 Deno 发布了这些功能,我将再次尝试 Deno。”


网友的反应来看,Deno 的这番“紧急预告”已经开始产生效果。不过,用户也许还得等两三个月才能用上改进后的新版 Deno。


参考链接:

https://deno.com/blog/changes

https://www.infoq.cn/article/3ZyWlLFvesQtS8acV7UU

2022-08-17 14:4419853
用户头像
罗燕珊 AI practitioner | Tech media

发布了 532 篇内容, 共 394.1 次阅读, 收获喜欢 844 次。

关注

评论 3 条评论

发布
用户头像
终于发展到性能指标也是着重点之一了,毕竟...没道理...慢那么多的[doge],非常期待^-^
2022-08-19 01:37 · 广西
回复
用户头像
卷!
2022-08-18 08:32 · 浙江
回复
用户头像
好呀,拭目以待。忍 node_modules 文件夹很久了
2022-08-18 07:31 · 广东
回复
没有更多了
发现更多内容

搭建本地http服务器-打开本地文件

Lemoon Can

notion链接脑图 mac开机自启动服务 打开本地文件的http服务器

MySQL数据库中SQL语句分几类?

小魏写代码

【腾讯云 HAI域探秘】整合腾讯云HAI的ChatGLM模型到NUXT官网:实现智能IM功能

攀登者

未雨绸缪,天翼云云备份护航企业稳健发展

极客天地

【EMNLP 2023】面向垂直领域的知识预训练语言模型

阿里云大数据AI技术

人工智能 | 揭秘计算机如何理解和处理人类语言

测吧(北京)科技有限公司

测试

人工智能 | 计算机如何理解和生成人类语言

测吧(北京)科技有限公司

测试

如何最大化利用虚拟主机:实用技巧与建议

一只扑棱蛾子

虚拟主机

生产环境质量保障的四大挑战

老张

质量保障 测试右移

鹏华基金核心系统完成国产化升级,腾讯云大数据TBDS再拓应用新场景

腾讯云大数据

TBDS

去哪儿如何实现故障率降低65%?技术+管理的数字化度量体系实践

TakinTalks稳定性社区

亚马逊云科技宣布推出三项无服务器服务创新

财见

在使用item_get API时,如何处理重复的商品信息?

技术冰糖葫芦

API 接口

人工智能的基础概念与原理

测吧(北京)科技有限公司

测试

人工智能 | 数据驱动的机器学习:智能系统如何学习

测吧(北京)科技有限公司

测试

文心一言 VS 讯飞星火 VS chatgpt (151)-- 算法导论12.2 7题

福大大架构师每日一题

福大大架构师每日一题

使用 KubeRay 和 Kueue 在 Kubernetes 中托管 Ray 工作负载

字节跳动云原生计算

ray KubeRay

一文详解安全随机数

华为云开发者联盟

安全 华为云 华为云开发者联盟

从 MLOps 到 LMOps 的关键技术嬗变

百度Geek说

大模型 MLOps 12 月 PK 榜 Prompt LMops

Solidity之旅(七)单位以及全局变量

BSN研习社

做服务的架构陷阱,你掌握了多少

华为云开发者联盟

后端 开发 华为云 华为云开发者联盟

低代码正在改变软件开发方式

互联网工科生

软件开发 低代码 JNPF

Node之父着急宣布:Deno将迎来重大变革,更好地兼容Node和npm包_语言 & 开发_罗燕珊_InfoQ精选文章