首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Node.js之父新作品Deno 1.0正式亮相

Deno是个JavaScript Runtime,能让JavaScript和TypeScript程式,在浏览器之外的地方执行,并且为了安全起见,所有程式预设在沙盒中执行,而且全面地使用Promises,解决尾延迟(Tail Latency)的问题,不过,Ryan Dahl提到,比起已经发展十年的Node,Deno还很年轻仍有许多限制,开发者在发展技术选择上要仔细考量。

Node.js在2009年开发,经过了十年发展,现在的JavaScript已经与当时相当不同,Ryan Dahl表示,当时Node必须要发明概念,这些概念被标准组织采纳之后,再以不同的实作方式添加到语言中,但随着JavaScript不断的发展,还有像是TypeScript出现,管理建置系统和其他繁杂的工具等任务,当使得建构Node.js变成一件困难的事,而且他也认为,Node .js连接外部储存库的机制,从根本地整合了NPM储存库,这与网页理想不符。

有鉴于各种因素,Ryan Dahl认为,JavaScript生态系已经发生了巨大变化,是时候进行简化,他要创造出可用来处理多种任务的高效能脚本环境,而这个产物便是Deno,Deno提供了让开发者快速编写复杂功能脚本的独立工具,可生成单一执行档,不需要依赖其他工具,在单个档案就可以定义复杂行为。

和浏览器一样,在预设情况下,Deno会以沙盒执行程式码,脚本也无法轻易地存取硬碟、开启网路连接或是任何其他具潜在恶意操作的行为,Deno虽可以让应用程式存取相机和麦克风API,但是需要经使用者授与权限,其能够在终端中提供类似的控制,使用者除非在命令列使用--allow-net等特有标签,应用程式才能使用指定的功能。

由于为了让Deno适用于更广泛的领域,因此强调能良好支援JavaScript语言扩展TypeScript,让开发者能够选择性提供类型资讯,Ryan Dahl提到,特别是复杂的伺服器端商业逻辑,类型检查的需求变得重要,因此Deno在设计时特别考量TypeScript,Deno类型命令的所有内容都提供类型宣告,Deno的标准模组也全部使用TypeScript编写。

而Ryan Dahl也特别强调了Deno和Promises的深度结合,他提到,当初在发展Node的时候,还没有Promises或async/await的概念,这些都是之后才出现的,Node是以EventEmitter来提供类似的功能,除了无法获得async/await的好处之外,EventEmitter模式还会有背压(Back-Pressure)的问题,而Deno没有这些问题,Deno从低阶系结层到系统,都紧密的结合Promises 。

在发布Deno 1.0的同时,Ryan Dahl也说明了许多Deno当前的限制,他提到,由于Deno不是Node的分支,而是一个全新的实作,从生态系发展角度来说,可能还不适用于部分应用程式,而且Deno与Node套件并不相容,虽然他们提供了一个相容层,计画逐渐让Deno能够直接执行Node程式,不过目前这个技术还只是在初始阶段。

而Deno的HTTP伺服器的效能,最大每秒约处理25,000个请求,最大延迟为1.3毫秒,而在类似的Node程式,每秒则可处理34,000个请求,最大延迟介于2到300毫秒之间。 Ryan Dahl表示,Deno是一个适当的非同步伺服器,最大延迟的表现比Node更好,而每秒处理25,000个请求应该可以满足大部分的应用,如果需要更高的处理量,或许不适合采用JavaScript开发。

在扩充套件上,Deno社群正在发展一个全新的套件系统,让开发者自定义程式来扩展Deno Runtime,不过这个技术也还在初期阶段,介面还在开发中未达稳定阶段,因此目前要存取Deno提供之外的本机系统还很困难。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200515A081O300?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券