写点什么

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:4417972
用户头像
罗燕珊 AI practitioner | Tech media

发布了 503 篇内容, 共 346.9 次阅读, 收获喜欢 808 次。

关注

评论 3 条评论

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

JavaScript和Java:看似相似但实际上截然不同

伤感汤姆布利柏

ACK One:构建混合云同城容灾系统

阿里巴巴云原生

阿里云 Kubernetes 云原生

信息茧房的困境

老张

信息茧房 sora

区块链软件开发:创新、安全、智能的数字未来

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

IPQ9574/Breaking the speed boundary: exploring the innovative technologies of WiFi 7

wallysSK

GIT好习惯助你成为更出色的开发者

南城FE

git 开发者 前端 后端 开发工具

一文搞懂设计模式—门面模式

Java随想录

Java 设计模式

大模型开发:从数据挖掘到智能应用

百度开发者中心

自然语言处理 大模型 人工智能、

扯淡的DevOps,我们开发根本不想做运维!

京东科技开发者

Python可视化工具集合来报道(下)

小齐写代码

想要一个龙年头像,在线等挺急的

阿里巴巴云原生

阿里云 云原生 函数计算 Stable Diffusion

面试官:如何实现10亿数据判重?

王磊

Java 面试题

GaussDB通信运维:详解stream连接池设计原理

华为云开发者联盟

数据库 华为云 华为云GaussDB 华为云开发者联盟 华为云GaussDB(DWS)

基于OpenTelemetry实现Java微服务调用链跟踪

华为云开发者联盟

Java 微服务 Spring Boot 华为云 华为云开发者联盟

详解 JSON 文件的打开方法

Apifox

JavaScript json 程序员 前端 教程

文档图像大模型在智能文档处理领域中的应用

百度开发者中心

人工智能 深度学习 大模型 智能文档

微信小程序制作步骤,开发成本低,轻松打造

天津汇柏科技有限公司

小程序开发 开发小程序

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