HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

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:4417030
用户头像
罗燕珊 InfoQ中文站编辑

发布了 479 篇内容, 共 314.8 次阅读, 收获喜欢 792 次。

关注

评论 3 条评论

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

【YashanDB知识库】YAS-02024 lock wait timeout, wait time 0 milliseconds

YashanDB

yashandb 崖山数据库

解读jd.item_search_img API返回值:京东按图搜索的智能匹配

技术冰糖葫芦

API 安全 API 文档 API 开发 API 协议

Luminar Neo for Mac(AI技术图像编辑软件) 1.17.0版

Mac相关知识分享

iStat Menus for Mac(系统活动监控器) v6.73 (1230)中文版

Mac相关知识分享

Final Cut Pro X for Mac(fcpx专业多媒体剪辑软件) v10.4.9特别版

Mac相关知识分享

管理者如何为团队赋能,提升测试效率

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

测试

LeetCode题解:2319. 判断矩阵是否是一个 X 矩阵,JavaScript,详细注释

Lee Chen

Socks5代理为什么比HTTP代理快?

IPIDEA全球HTTP

代理IP http代理 socks5代理

数据集与数据库的差异

蛙人族

利用SpringBoot+rabbitmq 实现邮件异步发送,保证100%投递成功

快乐非自愿限量之名

spring Spring Boot 邮件

华为云发起,openGemini正式成为CNCF官方项目!

华为云开发者联盟

数据库 开源 华为云 华为云开发者联盟 企业号2024年7月PK榜

小智报表实战系列-2 商品销售交叉表

小智数据

任务调度TASKCTL与ETL DataStage融合:打造高效企业数据处理

敏捷调度TASKCTL

ETL任务 TASKCTL ETL数据集成 任务调度平台

Introducing Wallys' Peacock: The Ultimate Industrial-Grade WiFi 6 Dual-Band Wireless Bridge - AVAILABLE NOW

wallyslilly

FASTROAMING 快速漫游 agv机器人

Rhinoceros 8 for Mac(犀牛8 mac版) v8.2.23346.13002版

Mac相关知识分享

可视化学习:如何用WebGL绘制3D物体

EquatorCoco

可视化 WebGL 3D

WebStorm 2023 for Mac(JavaScript开发工具) v2023.3.2中文版

Mac相关知识分享

BSC链近况及解读:BSC链代币DApp开发详解

区块链软件开发推广运营

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

小智报表实战系列-3 分栏报表

小智数据

有了小浣熊,办公数据分析不再愁

穿过生命散发芬芳

社区征文 办公小浣熊

亚马逊海外直播网络专线的重要性与优势

Ogcloud

直播带货 电商直播 亚马逊 亚马逊直播

STM32入门开发-详解GPIO口的配置与控制方式(以LED灯为例)

DS小龙哥

7月月更

探索AI人才培养新范式,合合信息与同济大学软件学院签署产教融合人才培养协议

合合技术团队

合合信息 校企合作 #人工智能 同济大学

Alfred 5 for Mac(mac应用快速启动器)v5.1.4 (2195)中/英版

Mac相关知识分享

SketchUp Pro 2022 for Mac(草图大师)中英文双语 v22.0.353版

Mac相关知识分享

VMware Fusion Pro for mac(vm虚拟机) v13.5.2版

Mac相关知识分享

焕新升级,Sermant 2.0.0 release版本重磅发布!

华为云开源

开源 云原生 微服务治理 华为云开源

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