前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Node.js 如何应对来自 Ryan Dahl 的 Deno 的挑战

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

作者头像
五月君
发布2020-11-11 11:35:39
1.1K0
发布2020-11-11 11:35:39
举报
文章被收录于专栏: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 删除。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 对于Ryan Dahl批评的回应
  • 在服务端JavaScript仍然很强大
  • Node.js和Deno的未来
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档