北京最权威白癜风专科 http://www.pfzhiliao.com/Node.js是用于服务器和本地机器的事实上的JavaScript运行时。它很受欢迎,用途广泛,并得到了强大社区的支持。Deno是一个更新的运行时,旨在解决Node.js的一些缺点。这就是Deno希望改进的地方。
基础
从历史上看,JavaScript被委托给网络。像Node.js这样的运行时扩展了JavaScript开发人员可以定位的环境,使得使用该语言构建后端系统变得可行。
Node.js和Deno都建立在Chrome浏览器使用的V8JavaScript引擎之上。Node.js成立于年,而Deno于年出现。这两个项目都是由RyanDahl创建。Deno是Dahl尝试利用前十年的经验来改造Node.js。
Deno专注于提供设计安全的轻量级运行时。它还内置了对TypeScript的支持,这是Microsoft主导的JavaScript类型化超集,在整个生态系统中变得越来越流行。直接这使得Deno成为更喜欢使用TypeScript提供的类型保护的人的更好的候选人。
安全和权限
Deno前提的很大一部分建立在安全性之上。这延伸到它所用的语言:尽管Node.js和Deno都使用V8,但Deno避开了Node的C++,转而使用更现代的Rust语言。Rust提供类似的性能水平,但具有更高的安全性。
Deno具有严格的权限系统,可以限制进程可用的功能。在明确授予访问权限之前,他们无法访问网络、文件系统或外部环境。相比之下,任何用Node.js执行的东西都可以自动使用这三者。
需要访问的脚本的选择加入过程提供命令行标志或运行时权限提示的选择。标志可以非常细化,例如--allow-read=/tmp允许文件系统访问单个目录。这使用户和管理员能够将程序限制在他们所需的最低访问级别。
去中心化的包裹管理
不管喜欢还是讨厌,npm(节点包管理器)已成为大多数现代JavaScript开发不可或缺的一部分。npm是Node.js的一个单独项目,理论上也可以与Deno一起分发。Deno不包含它,并且不支持使用node_modules目录中的包。
Node.js偏爱CommonJS模块,因为它的模块支持早于将原生ES6模块添加到JavaScript标准。Deno需要使用ES样式的导入,并允许在任意远程URL上使用模块:
import{anExport}from"