阿里云飞天发布时刻,领先大模型限免,超7000万 tokens免费体验 了解详情
写点什么

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

发布了 537 篇内容, 共 398.8 次阅读, 收获喜欢 847 次。

关注

评论 3 条评论

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

【白皮书】TiDelta,一款简单易用的 TiDB 性能对比 Web 工具。

TiDB 社区干货传送门

TiDB 5.4 单机快速安装初体验

TiDB 社区干货传送门

管理与运维 版本测评

TiDB中快速恢复被Truncate 的表

TiDB 社区干货传送门

管理与运维

传统行业数据架构发展变化

TiDB 社区干货传送门

数据库架构选型

【考试指南】TiDB 5.0认证指南之PCTA PCTP

TiDB 社区干货传送门

TiDB 底层架构

TiDB 悲观事务模式和Mysql的表象区别

TiDB 社区干货传送门

在CentOS7上进行TiDB/PD/TIKV编译分享

TiDB 社区干货传送门

实践案例 安装 & 部署

TiDB与众不同的优化器

TiDB 社区干货传送门

性能测评 应用适配

大事务的处理方式对比

TiDB 社区干货传送门

实践案例

数据库调优之硬件

TiDB 社区干货传送门

性能调优

【备考指南】新版 PingCAP PCTP 认证考试

TiDB 社区干货传送门

TiDB Binlog 支持 Oracle 目标库功能用户手册

TiDB 社区干货传送门

迁移

DR Auto-Sync 搭建和计划内切换操作手册

TiDB 社区干货传送门

TiDB 5.4 发版丨新功能解读

TiDB 社区干货传送门

TiSpark 2.4.1(Spark 2.4.5)到TiSpark 2.5.0(Spark 3.0.X/3.1.X)迁移实践

TiDB 社区干货传送门

实践案例

TiDB统计信息原理简介与实践

TiDB 社区干货传送门

管理与运维

温故知新 | mydumper & dumpling 知识点汇总

TiDB 社区干货传送门

Tidb为什么能做到国产第一

TiDB 社区干货传送门

性能测评 数据库架构设计 应用适配

TPC-H 下 TiFlash 的扩展性测试报告 - v5.1.0

TiDB 社区干货传送门

版本测评 性能测评

TIKV、PD添加TLS总结

TiDB 社区干货传送门

实践案例

DM 同步 modify column 语句到 TiDB 5.3 踩坑一:数据乱码

TiDB 社区干货传送门

实践案例 故障排查/诊断

DM 同步 modify column 语句到 TiDB 5.3 踩坑二:DDL 语句重放

TiDB 社区干货传送门

实践案例 故障排查/诊断

ticdc没报错,tso却不变的奇怪现象

TiDB 社区干货传送门

悲观锁模式下 TiDB 与其他数据库在 RC 及 RR 隔离级别的行为对比

TiDB 社区干货传送门

用 Gravity 实现 MongoDB 到 TiDB 的数据复制

TiDB 社区干货传送门

TiDB源码系列之沉浸式编译TiDB

TiDB 社区干货传送门

TiDB 源码解读

混沌工程在建信金科的应用实践

TiDB 社区干货传送门

实践案例 故障排查/诊断 TUG 话题探讨

dm-V1.0.5使用汇总

TiDB 社区干货传送门

管理与运维

Raft/Paxos类协议与分布式事务

TiDB 社区干货传送门

数据库架构设计

【专栏平台上线】来自社区的一份感谢信,致谢 137 位 TiDB 社区技术布道师

TiDB 社区干货传送门

TiEM初体验

TiDB 社区干货传送门

集群管理 管理与运维 6.x 实践

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