英巴卡迪诺_什么是迪诺? 一个更好的Node.js

英巴卡迪诺

如果您喜欢Node.js但不喜欢它的包管理器npm ,或者想要一个比Node.js更安全JavaScript运行时环境,则可能会发现感兴趣的新开源项目Deno (单词Deno是Node的字谜)。 另一方面,如果您在生产中使用Node.js,那么这里什么也看不到,继续前进– Deno仍“处于开发阶段”。

Deno是用于在浏览器外部运行JavaScript和TypeScript代码的程序。 这是Ryan Dahl率先进行的最新工作,Ryan Dahl于2009年创立了Node.js项目,并且它是根据2009年以来JavaScript的进步(包括TypeScript编译器)来重新构想Node.js的尝试。 与Node.js一样,Deno本质上是Google V8 JavaScript引擎的外壳,尽管与Node.js不同,Deno在其可执行映像中包括TypeScript编译器。

[ 同样在InfoWorld上:TypeScript与JavaScript:了解差异 ]

Deno和高级JavaScript

根据Dahl的说法,在2009年,JavaScript缺少一些对Node.js有用的功能。 这些年来,其中一些作为ECMAScript(ES)标准的一部分已添加到JavaScript中,而TypeScript解决了其他一些问题。

JavaScript本质上永远具有事件和回调,但是它们可能导致相当复杂的代码,尤其是当您要链接异步操作时。 承诺使语法更具可读性。 promise是一个返回的对象,代表异步操作的最终完成或失败,您可以向其附加回调,而不是将回调传递到函数中。 声明函数async进一步简化了语法,使您可以在函数内使用await以非阻塞方式暂停,直到承诺成立为止。

创建Node.js时,JavaScript模块的事实上的标准是CommonJS,这是npm支持的。 从那时起,ECMAScript委员会正式采用了另一个标准,即jspm支持的ES模块。 Deno支持ES模块。

类型化数组是用于处理二进制数据的ES6 API,Node.js本可以使用这种类型。 缺少二进制数据支持导致了一些Node.js设计问题。 Deno需要处理原始二进制数据时使用类型化数组。 Node.js现在支持用户代码的类型化数组。

TypeScript是JavaScript的类型化超集,可编译为纯JavaScript(ES3或更高版本;它是可配置的)。 TypeScript为JavaScript添加了可选的类型,类和模块,并支持用于大型JavaScript应用程序的工具。 (Anders Hejlsberg称其为“可缩放JavaScript”。)如前所述,Deno在其运行时包含TypeScript编译器的映像。 如果传递Deno一个TypeScript文件,它将首先将其编译为JavaScript,然后将其传递给V8引擎。

[ 也在InfoWorld上:最佳的软件开发,云计算,数据分析和机器学习产品 ]

Node.js设计的缺点

根据Dahl的说法 ,毕竟他同时设计了Node.js和Deno,Node.js面临三个主要设计问题:

  • 设计不良的模块系统,具有集中分布;
  • 许多必须支持的旧版API;
  • 而且缺乏安全性。

Deno解决了所有三个问题。

迪诺安全执行

Deno通过Node.js改进安全性的方法很简单:默认情况下,Deno不允许程序访问磁盘,网络,子进程或环境变量。 当您需要允许这些选项中的任何一个时,您可以选择使用命令行标志来选择加入,例如,-- --allow-read=/tmp--allow-net=google.com 。 Deno的另一个安全性改进是,它总是死于未捕获的错误,这与Node.js不同,Node.js允许在发生未捕获的错误后继续执行,其结果可能无法预测。

Deno模块

在Node.js中,您可以使用require关键字加载CommonJS模块,而所有标准模块和第三方模块都隐式地来自npmjs.com 。 在Deno中,您可以使用import关键字加载ES模块并显式声明URL。 例如:

import * as log from "https://deno.land/std/log/mod.ts";

Deno模块可以在任何地方托管–没有用于第三方模块的集中存储库。 此外,除非始终明确要求刷新,否则模块始终在本地缓存和编译,并且不会更新。 因此,即使所有导入都已被解析一次,即使您在没有连接的飞机上,您也应该能够运行笔记本电脑上已经存在的Deno程序。

Deno确实具有标准模块的集中集合,这些标准模块没有外部依赖性,并且由Deno核心团队进行了审查。 它位于deno.land服务器上。 deno_std模块集合Go的标准库的一个松散端口。

[ 通过InfoWorld Daily新闻通讯了解软件开发,云计算,数据分析和机器学习方面的最新发展 ]

选择该库的模型背后有一段历史。 Dahl主要使用Go语言编写了Deno原型,但是发现Go和V8中的垃圾收集器之间可能存在冲突。 然后,他和他的合作者使用V8, Rust和Rust异步I / O包Tokio重新编写了Deno。 他们在TypeScript中实现了Deno标准库。

此时,Deno是一个合理且有趣的环境,可用于在TypeScript中构建小型私人脚本项目。 根据Dahl的说法,Deno绝对不会真正影响Node.js的成功。 但是,一旦Deno达到1.0版,它很可能成为构建大型项目的可行选择。

翻译自: https://www.infoworld.com/article/3529779/what-is-deno-a-better-nodejs.html

英巴卡迪诺

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值