Deno是用于命令行脚本的Web浏览器

发布于:2021-01-07 13:58:43

0

292

0

deno javascript nodejs

Deno 1.0计划于5月13日到货。为此,我们与Deno创作者Ryan Dahl谈了有关Deno与Node有何不同,它与JavaScript生态系统如何兼容以及旅程将超越v1的信息。可以将lodash与Deno一起使用吗?

JAXenter:嗨,Ryan,大约两年前,您开始开发Deno,它最初是基于不同的概念发展成为Node的替代方案的想法。现在,v1即将来临,您会说Deno和Node之间的主要区别是什么?

Ryan Dahl: Deno使用了一种非常简单的模块系统,其中模块和URL一对一对应。此外,Deno可以立即执行TypeScript代码。这两个功能可以大大简化开发人员的工作流程。Deno在安全性方面比Node更严格。默认情况下,脚本在不访问操作系统的安全沙箱中运行-用户可以有条件地选择提供进一步的功能-这与浏览器安全模型相对应,在该模型中,网站要求获得访问摄像机或位置信息的许可。通常,Deno的行为更像是Web浏览器–本质上,它是用于命令行脚本的Web浏览器。

JAXenter:对于许多开发人员来说,一个重要的问题是Deno如何与更大的JavaScript生态系统集成。在Deno中可以使用Node模块吗?

Ryan Dahl:为了实现简化的工作流程,Deno必须寻求与现有生态系统不兼容的想法。遗憾的是,今天通常很难获得Node模块并在Deno上运行它,反之亦然。也就是说,这两个都是基于V8构建的命令行JavaScript引擎-它们非常相似-我们最终希望可以解决这些兼容性问题。这方面的工作之一是https://deno.land/std/node/  ,它在Deno中公开了Node兼容的“ require”功能。

JAXenter:Deno的特定模块怎么样?lodash之类的软件包已经移植到Deno了吗?

Ryan Dahl:是的,Deno上的许多模块都可以直接使用,其中lodash是其中之一:

import snakeCase from "https://deno.land/x/lodash/snakeCase.js"; console.log(snakeCase("fooBar"));

我们在https://deno.land/x/上保留了可在Deno上运行的第三方模块的索引 。

JAXenter:在发布v1之后,您对稳定性和进一步开发的计划是什么:该版本的维护时间是否有保证,或者主要版本的发布时间表是否有保证?

Ryan Dahl: v1旨在稳定内置的JS API,以便开发人员可以放心其代码不会被破坏。但是,我们正在进行许多开发,并且我们将继续发布每周更新。我们还没有2.0版本的时间表,甚至还没有针对功能的时间表,但是人们可以期待定期发布稳定版本。

JAXenter:v1即将完成时,是否已经安排了更高版本的功能?如果是这样,我们期望在进一步的Deno版本中看到什么?

Ryan Dahl: 1.0版以后,Rust API会投入更多的精力将Deno嵌入其他程序中,并制作插件来扩展Deno的功能。我们正在研究内置的短绒棉绒(deno lint),希望借此提高代码质量。我们正在研究是否可以在Rust中完成TypeScript类型检查,而不是使用JavaScript TSC进行检查-这将大大缩短启动时间。