Deno是基于V8引擎和Rust语言所创建的JavaScript、TypeScript运行环境,由Node.js的原始开发者Ryan Dahl所创造。 Dahl在2018年的演讲“我为Node.js感到后悔的十件事”中宣布了Deno。 Deno在单个可执行档中扮演运行环境和包管理系统的角色,不需要将其分开。
Deno于2018年Ryan Dahl的演讲“我为Node.js感到后悔的十件事”中宣布。在这场演讲中,Ryan提到他后悔Node.js的设计,例如没有在API中使用JavaScript的Promise、GYP建构系统、省略文件的扩展名、node_modules与package.json、使用index.js进行模块解析、V8的沙盒环境等等。他在演讲的最后提出了Deno的原型,Deno旨在透过如Protocol Buffers之类的序列化工具传递消息来实现绑定系统的调用,并提供命令行接口来访问控制。
Deno初始版本是使用Go语言编写,并使用Protocol Buffers来实现特权(Go)与非特权(V8)之间的序列化。然而因顾虑到双重运行与垃圾搜集,Go在不久后就被Rust取代。
为了让Deno拥有异步的事件触发环境,Tokio也被引进来取代原本的libuv。
Deno原本采用Flatbuffers以进行更快的零复制序列化与反序列化,在2019年4月发布序列化的标准之后,2019年8月被移除。
2018年11月创建了一个以Go标准库为基底的标准库,并提供了广泛的工具,解决部分Node.js的dependency问题。
Deno于2020年5月13日正式发布。
Deno目标是成为对目前的工程师来说最具有生产力的的脚本环境。Deno强调事件触发架构,并提供一套non-blocking IO与blocking IO。
Deno可用于创建网页服务器、运行数学的运算等等。
Deno与Node.js的相同之处:
Deno与Node.js的不同之处:
最基本的Deno脚本,没有任何读写网络的权限:
deno run main.ts