首页
学习
活动
专区
工具
TVP
发布

Node之父ry发布新项目deno:下一代Node

作者|徐川、覃云

近日,Node 之父 Ryan Dahl 发布新的开源项目 deno,从官方介绍来看,可以认为它是下一代 Node,使用 Go 语言代替 C++ 重新编写跨平台底层内核驱动,上层仍然使用 V8 引擎,最终提供一个安全的 TypeScript 运行时。

它的特性包括:

支持 TypeScript 2.8 开箱即用;

无 package.json,无 npm,不追求兼容 Node;

通过 URL 方式引入依赖而非通过本地模块,并在第一次运行的时候进行加载和缓存,并仅在代码使用运行,依赖才会更新,引入方式如:

可以控制文件系统和网络访问权限以运行沙盒代码,默认访问只读文件系统可访问,无网络权限。V8 和 Golang 之间的访问只能通过 protobuf 中定义的序列化消息完成;

发生未捕捉错误时自动终止运行;

支持 top-level 的 await;

最终创建单一可执行文件;

目标是兼容浏览器;

可以作为库引入,用于建立自己的 JavaScript runtime。

这几个特性,有好几个都是针对目前 Node 的痛点而来的,包括无 package.json、依赖的引入和更新方式,针对的就是被广泛吐槽的过大的。

同时,不追求兼容 node,可以视为 ry 想彻底抛弃 node 包袱,打造一个更好的 JS 运行时。

作者在 GitHub Issue 回复开发者的几个问题:

deno 和 Node 的区别是什么?

ry 开玩笑称,目前两者最大的区别是 Node 大行其道,而 Deno 尚未投入使用。

从更高层面上来说,Deno 尽可能简化 V8 与系统 API 的耦合,并打造更加简单、稳定的模块系统,以及一个安全的沙箱运行环境。

再者,使用 Golang 而不是 C++ 作为底层语言,这样,添加高级功能时会比在 Node 中更加容易,比如在 Go 中添加 http2.0支持,只需添加一些路由 API 和一些配置到 protobuf 中。

Deno 诞生的目的,是为了创建更简单和安全的非浏览器 runtime,它在这个时候出现,是因为现在的开发工具比 2009 年更好。

我们还可以认为 Deno 将是目前 Node 生态一些难解问题的终极答案,比如依赖管理、安全性、稳定性、横向扩展等等。

Deno 的诞生,将启发更多人投入到下一代 Node 的探索当中,这比之前 Node 的一些分叉更具备创新和革命性。

目前 Deno 正在紧张开发当中,我们也将持续关注它的进展。

Deno Github 地址:

https://github.com/ry/deno

前端之巅

「前端之巅」是 InfoQ 旗下关注大前端技术的垂直社群。紧跟时代潮流,共享一线技术,欢迎关注。

活动推荐

GMTC 全球大前端技术大会邀请到了来自 Google、Twitter、Instagram、LinkedIn、Hulu 等国外一线前端专家前来分享他们的前端前沿技术和最佳实践,更有 iOS 社区大神 Mattt、Apollo GraphQL 负责人等大牛的助阵,另外月影、寒冬、迷渡、程墨、教主、小春等 50+国内知名前端大佬也会带来精彩分享,可谓干货满满。

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

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券