针对Node.js中的“设计错误”,其开发人员发布了JS/Tyescript Runtime Deno 1.0

2020-05-17 04:45:32

广泛使用的JavaScript服务器端运行时Node.js的制造商发布了Deno 1.0,这是一个新的JavaScript和TypeScript运行时,解决了Node.js中的设计错误。

在过去的两年里,Node.js的创建者Ryan Dahl一直在开发Deno JavaScript项目,他的贡献者团队现在已经发布了Deno 1.0,这对JavaScript开发人员来说可能会变得与Node.js一样重要。

JavaScript是使用最广泛的编程语言之一,在每一台有网络浏览器的设备上都使用它。就像Node.js或Node一样,Deno运行时用于在Web浏览器之外执行JavaScript。

然而,与Node.js不同的是,Deno为微软日益流行的TypeScript提供了一流的支持,TypeScript是为大型项目设计的JavaScript超集。

Deno基于Google的Chromium V8 JavaScript引擎,并且是用Rust编程语言编写的,而不是Node的C++。

除了修复Node.js的问题外,Dahl还希望Deno能够迎合JavaScript,因为与2009年他设计Node时相比,JavaScript是一种非常不同的语言。此外,由于Node的广泛使用,Node变得很难更新。

随着JavaScript语言的不断变化,以及TypeScript等新功能的加入,构建节点项目可能会成为一项艰巨的工作,包括管理构建系统和其他繁重的工具,这些工具剥夺了动态语言脚本编写的乐趣,达尔在由Deno开发人员Bert Belder和Bartek Iwańczuk共同撰写的一篇博文中写道。

此外,链接到外部库的机制基本上是通过NPM存储库集中起来的,这不符合Web的理想,他补充道,他指的是Node的NPM包。

Deno核心是用Rust编写的,Deno 1.0的主要组件是Deno命令行界面(CLI)。

Dahl说,Deno不是一个单一的程序,而是一个铁锈板条箱的集合-软件包或软件库-允许在不同的层进行集成。例如,Deno核心机箱是Deno的最基本的框架,而Rusty_V8机箱提供到V8的C++应用程序编程接口(API)的Rust绑定。

";该机箱提供了在GitHub Actions CI中内置的二进制文件,但它也允许用户从头开始编译V8并调整其许多构建配置,";Dahl写道。

";所有V8源代码都分发在机箱中。最后,RUSTY_V8试图成为一个安全的接口。现在还不是百分之百安全,但我们快到了。能够以安全的方式与V8这样复杂的虚拟机交互是相当令人惊讶的,这让我们在Deno本身发现了许多困难的错误。

Dahl还强调,Deno不是Node的分支,而是一个全新的实现,尽管目标与Node相似。一般来说,它也与NPM不兼容。然而,Dahl预计Deno最终将能够运行更多开箱即用的Node程序。

根据Dahl的说法,Deno在Web服务器上的性能与Node相当,但Deno的延迟比Node更好。

hello-world Deno HTTP服务器每秒处理大约25k个请求,最大延迟为1.3毫秒。他指出,一个类似的Node程序每秒处理34k个请求,最大延迟在2到300毫秒之间相当不稳定。