首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Node.js 如何应对来自 Ryan Dahl 的 Deno 的挑战

Node.js 如何应对来自 Ryan Dahl 的 Deno 的挑战

作者头像
五月君
发布于 2020-11-11 03:35:39
发布于 2020-11-11 03:35:39
1.2K0
举报
文章被收录于专栏:Nodejs技术栈Nodejs技术栈

开源JavaScript运行时Node.js上周发布了第15版。经历了11年个年头,Node.js一如既往地受欢迎,但是在2020年,一个竞争对手横空出世。Deno是今年5月份发布的开源JavaScript运行时,由Node.js的原作者Ryan Dahl创建。把Deno说成是Node的竞争对手,好像有点不恰当(译者:毕竟Ryan Dahl可是被大家称作Node之父),因为Deno的创建是专门为了解决Dahl所认为的Node.js的致命缺陷而设计的,包括安全性问题,使用集中依赖管理系统(npm)和“笨重的工具。”

为了弄清当前的Node.js维护者怎样看待新的挑战者,并进一步了解他们会如何应对Dahl的批评,我采访了Red Hat的资深软件工程师和Node.js技术指导委员会委员Bethany Griggs。自2016年以来,Griggs一直是Node.js项目的参与者,主要是Node.js发行工作组。

Node.js使开发者能够在Web浏览器之外执行JavaScript代码。它最初目的是让服务端一样可以执行js代码,在代码发送到浏览器之前就在服务器上创建动态网页(译者:以及将异步IO和Http事件结合起来将是一件非常酷的事)。而现在,Node.js已经普遍的作为js的后端框架(就像React和Angular对于前端那样)。这样开发者就可以用js同时开发前端和后端了。

Node.js具有高扩展性和事件驱动模型,这两者都使其非常适合云原生应用的开发。

“ Node.js仍然是构建云原生微服务和后端应用的主要运行时之一,” Griggs告诉我。她补充说:“它在IoT(物联网)项目中也很流行-我最喜欢的例子之一是NASA使用Node.js监控太空服数据。”

抛开太空服不谈,Node.js不再被视为JavaScript开发的热门宠儿(Next.js,一个前端React框架,也许已经站在了风口上)。与Deno的最先进特性(例如,Deno是用风头正盛的Rust编写)相比,Node.js项目如今的发展道路显得相对保守。因此,Node.js15是增量升级也就不足为奇了。

Griggs指出“默认抛出未处理的异常”是v15中最重要的更新。这意味着开发者现在可以获得“先一步的反馈,即使他们忽略了在应用中的进行异常处理。” 毫无疑问,这是一次有价值的技术性更新,但不太可能在Twitter技术版上引起热烈的讨论。

对于Ryan Dahl批评的回应

我更好奇的是,Node.js项目团队是否进行了新的开发或修复,来解决Ryan Dahl在过去几年中提出的一些担忧?

几年前,Dahl做了一个演讲(我对Node.js的遗憾的十件事)。其中最主要的一点,他没有使运行时变得尽可能安全——他在创建Deno时解决了这一问题,尤为重要的是“默认情况下是安全的”。Deno通过对数据访问进行安全隔离来确保安全性。它的文档里提到,“Deno需要显式的权限来进行文件,网络和环境的访问。”

Ryan Dahl在JSConf EU 2018上。

官方上,Griggs告诉我,Node.js将在这些问题上“从Deno那里获得灵感”。同时她也说Node.js项目“从Deno宣布之前就一直围绕强安全性和限制API访问权限进行讨论。” 她指出了安全性的几个“实验特征”(示例1,示例2)。

而且,Griggs也不相信Deno的安全至上访问方法适合Node.js。她说:“对于实际的应用程序而言,你很快就得回退回去再对许多API的授权,反而有些得不偿失。”

尽管Node.js项目团队有兴趣尝试使用更强大的安全功能,但Griggs表示:“并没有令人信服的理由采取与Deno一样的策略。”

至于Dahl对npm作为模块管理的封闭生态的批评,Griggs认为Node.js没有理由改变它。

“就模块的管理方式而言,模块生态已成为Node.js非常成功的一部分。尽管围绕端上集成还是注册表服务于模块的讨论一直在进行,但重点在于增加对ES6模块的支持,而不是改变模块的管理方式。”

Deno并未使用npm,而是采用了通过URL或文件路径来引入模块。

在服务端JavaScript仍然很强大

随着Next.js和Gatsby等JS框架的流行,以及Jamstack这种生成静态站点的方式的兴起,我问Griggs这是否对服务端如何使用JS造成了影响?

她说:“这可能会减少诸如模板引擎之类的东西在服务端渲染中的使用,但是,Node.js仍被大量用于构建微服务,来作为像Jamstack这类的方法部署的静态页面的后端。Node.js也依然会继续被大量用在构建端上JS开发流程工具上。”

Node.js和Deno的未来

那么,Node.js的接下来会如何发展?在Node.js15的公告中,Griggs写道,在去年庆祝Node.js十周年之后,“项目组开始了Node.js的未来十年的KO。”

我问Griggs,项目组成员希望在未来十年内做出哪些方面的改进?

她回答说:“到目前为止,我们已将开发者经验,稳定性,运行质量,Node.js维护者经验和保持最新的技术和API定为高优事项。”

目前,这些已在GitHub文件“价值观与优先级”中列出。之前提到过的安全性,它是“运行质量”的子类,简单来说:“以负责任的方式解决安全漏洞。”

在下一个十年中,这似乎并不是一个很高的目标,尤其是和Deno更雄心勃勃的目标——第一要务是避免漏洞相比。

但是,由于Node.js是一个稳定且发展了很久的项目,并且迎合了一些大型企业软件供应商(例如Grigg的雇主Red Hat),所以你不能说维护者太保守。另一方面,这也为其他人留出了更大的空间,可以大胆地思考服务器端JS的未来——这正是Dahl和他的Deno项目正在做的事情。

译自Richard MacManus的《How Node.js Is Addressing the Challenge of Ryan Dahl’s Deno》,原文请点击【阅读原文】

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-11-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Nodejs技术栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
deno如何偿还Node.js的十大技术债 [每日前端夜话0x3D]
“Node现在太难用了!”。Node.js之父 Ryan Dahl 去年初要开发一款 JavaScript 互动式数据分析工具时,忍不住抱怨起自己十年前一手创造的技术。
疯狂的技术宅
2019/03/27
9690
deno如何偿还Node.js的十大技术债 [每日前端夜话0x3D]
Node.js之父着急宣布: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 底
深度学习与Python
2023/03/29
9730
Node.js之父着急宣布:Deno将迎来重大变革,更好地兼容Node和npm包
相比于 Node.js,Deno 和 Bun 到底能带来什么?
Deno 和 Bun 是两个想颠覆 Node.js 的新的 JavaScript 运行时。这两个替代方案凭借其对 JavaScript 服务器开发的创新设计在社区里也收获了不少的人气。但真正的问题是:相比于 Node.js,它们究竟能带来些什么呢?
ConardLi
2024/03/11
9460
相比于 Node.js,Deno 和 Bun 到底能带来什么?
2年过去了,谁还记得曾想取代Node.js的他?
22年11月14日,Deno发布了v1.28,距离他第一个稳定版本v1.0.0发布(2020年5月13日)已过去2年。
公众号@魔术师卡颂
2023/02/13
1K0
2年过去了,谁还记得曾想取代Node.js的他?
2024年,Bun、Node.js还是Deno,哪个更适合你?
大家好,今天我们来聊聊2024年构建现代JavaScript API的新趋势。随着像Express.js这样的库的出现,搭建一个API变得简单快捷。但挑战在于选择合适的JavaScript后端语言环境。
前端达人
2023/12/19
6.1K0
2024年,Bun、Node.js还是Deno,哪个更适合你?
Deno会在短期内取代Node吗?
作为Node之父,Ryan Dahl认为Node自从他把项目移交出去后,Node的走向越来越背离了他的初衷,并且存在着很多无法解决的问题,所以他决心重新开发一个新的项目去解决这些问题,这个项目就名为Deno。目标则是Destroy-node。
葡萄城控件
2020/05/27
8610
什么是Deno?跟Node.js有何区别?
Node.js的作者Ryan Dahl,过去一年半的时间都在打造一个新的JavaScript运行环境Deno来解决Node的一些内在问题。
ConardLi
2020/03/02
1.9K0
什么是Deno?跟Node.js有何区别?
Node.js发展史
Ryan Dahl在 2009/3/3 的这次代码提交将蛋壳中的 NodeJS 项目命名为 node,从此,世界上多了一个 Node.js
ayqy贾杰
2019/07/04
2.7K0
被低估的 Deno
这个周末,我一直在把玩 deno 的 rusty_v8 以及 deno_core(录了几个 rusty_v8 的视频,预计四月第二周发)。rusty_v8 是 google v8 engine 的 Rust 零成本封装,而 deno_core 在 rusty_v8 的基础上进一步封装了一些额外的功能。众所周知,v8 是 chrome 内部的 javascript 执行引擎,它优异的 JIT 能力,以及高效的垃圾回收,使得 chrome 成为最快最成功的浏览器。v8 仅仅被用在浏览器中有些暴殄天物,于是十多年前(2009),Ryan Dahl 把 v8 引入了服务端,创建了 node.js —— node 以简单容易上手的编程模型(单线程,异步处理)和大量的前端拥趸一举成为广受欢迎的服务端开发工具;而 3 年前,Ryan Dahl 自我革命,重新用 v8 从零打造 deno,意欲让 deno 成为下一代服务器开发的王者。
tyrchen
2022/05/07
1.2K0
被低估的 Deno
Deno 2发布,提供长期支持和npm兼容性
Deno 2.0 预计将于 10 月初发布,将提供与 Node 和 npm 的完全向后兼容性、长期支持保证、单仓库和工作区支持等功能。
云云众生s
2024/09/22
1900
Deno 2发布,提供长期支持和npm兼容性
Deno 运行时入门教程:Node.js 的替代品
这几天假期,我学习了一下 Deno。它是 Node.js 的替代品。有了它,将来可能就不需要 Node.js 了。
ruanyf
2020/02/14
1.9K0
Deno 运行时入门教程:Node.js 的替代品
前端科普系列(2):Node.js 换个角度看世界
本文为系列文章(2),主要介绍 Node.js 的前世今生、核心科技以及背后的故事。
2020labs小助手
2020/03/12
1K0
Deno 2021 回顾:优化内核、兼容 Node.js
2021 年是 Deno 获得资助发展的第一个整年。我们的公司 有 10 个员工,而且还在不断增加。
深度学习与Python
2022/03/23
9030
Deno 2021 回顾:优化内核、兼容 Node.js
WebAssembly 是 Deno 的好搭档
备受期待的 Deno 项目 终于发布了 1.0 版本!Deno 是由 Node.js 的创始人 Ryan Dahl 创建的,旨在解决他所说的“我为 Node.js 感到遗憾的十件事”。
深度学习与Python
2020/08/28
2.5K0
只需5分钟,让你了解未来可能推翻Node的新轮子 Deno 1.0
最近Nodejs作者Ryan Dahl发布了Deno 1.0正式版,圈子一下沸腾起来了。或许你早在两年前就听说了这个东西,但是也有人不知道这个东西是什么,干什么用的,所以今天我将为大家来简单的聊一下这个将来可能会推翻Node的新轮子。
吴佳
2022/09/26
7290
Vue.js 首次屈居第二,JavaScript 2020 年度“新起之秀”都有谁?谁是第一呢?
不平凡的 2020 年体现在了方方面面,就连 JavaScript 的年度“新秀”也出现了 5 年来首次的变化,这次都有哪些项目上榜呢?
前端达人
2021/01/29
2.4K0
Vue.js 首次屈居第二,JavaScript 2020 年度“新起之秀”都有谁?谁是第一呢?
2023 年前端十大 Web 发展趋势
作者 | Robin Wiruch 译者 | 核子可乐 策划 | 丁晓昀 虽然就个人观点,我觉得 Web 开发的前景已经好几年没什么进展(2016 年至 2021 年),但在刚刚过去的 2022 年中确实又猛窜了一波。在本文中,我想跟大家聊聊自己看到的最新 Web 开发趋势。相信这波浪潮会继续激发 Web 开发者的关注,也让我对万象更新的 2023 年更具期待。闲言少叙,我们马上进入正题。 (元)框架 单页应用程序(SPA)及各类相关框架(包括 React.js、Vue.js、Svelte.
深度学习与Python
2023/03/29
3.2K0
2023 年前端十大 Web 发展趋势
什么是Deno,它与Node.js有什么不同?[每日前端夜话0xA1]
Node.js 的创建者 Ryan Dahl 花了一年半的时间研究 Deno(https://deno.land/),这是一个新的 JavaScript 运行时环境,可以解决Node 的所有问题。
疯狂的技术宅
2019/08/02
2.3K0
什么是Deno,它与Node.js有什么不同?[每日前端夜话0xA1]
Bun 1.0 作为 Node.js 和 Deno 的替代品发布
Bun 1.0 已经发布;它被设计成 Node.js 的替代品。Bun 速度很,但速度是唯一重要的因素吗?
云云众生s
2024/03/28
2590
Bun 1.0 作为 Node.js 和 Deno 的替代品发布
Deno:现代化 JavaScript 和 TypeScript 运行时的深入解析
Deno 是一个现代化的 JavaScript 和 TypeScript 运行时,由 JavaScript 创始人 Ryan Dahl 于 2018 年发布。它的设计旨在解决传统运行时(例如 Node.js)存在的一些关键问题,同时引入更强大的功能与现代化的开发体验。Deno 的特点、设计理念以及应用场景使其在当代开发中逐渐受到关注。
编程小妖女
2024/12/22
1820
Deno:现代化 JavaScript 和 TypeScript 运行时的深入解析
推荐阅读
相关推荐
deno如何偿还Node.js的十大技术债 [每日前端夜话0x3D]
更多 >
交个朋友
加入架构与运维学习入门群
系统架构设计入门 运维体系构建指南
加入架构与运维工作实战群
高并发系统设计 运维自动化实践
加入[架构及运维] 腾讯云技术交流站
云架构设计 云运维最佳实践
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档