Deno:Node.js 杀手?介绍和演示 | Ryan Dahl
辞旧迎新!Deno 会取代 Node 吗?让我们拭目以待。
Deno 是什么?
首先,它的发音是“De'no”,就像恐龙 Deno 一样。
它是 JavaScript 和 TypeScript 的安全运行时。一个通用的 JavaScript 和 TypeScript 编程环境。一种编写服务器端 JavaScript 的新方法。
它是由 Ryan Dahl 创建的,他也是 Node.js 的创建者。
那么,为什么要开发一款与之前产品直接竞争的产品呢?以下是Ryan Dahl的一段话。
“[node] 本来可以更好” — 我对 Node.js 感到遗憾的 10 件事
Deno 使用 Rust 和 TypeScript 构建,并使用 Chrome v8 引擎。它解决了 Node.js 的一些设计缺陷。
TypeScript
它内置了 TypeScript。因此无需 TypeScript 配置文件。但这并不意味着您必须使用 TypeScript。由于 TypeScript 是 JavaScript 的超集,因此如果您愿意,可以直接使用 JavaScript。
安全
Node 和 Deno 之间的一个巨大区别在于安全性。Deno 默认是安全的。所有内容都被锁定。您必须传递特定的标志,才能仅访问运行代码所必需的内容。这可以防止意外的安全漏洞。
模块
另一个区别是 Deno 使用 ECMAScript 模块。因此require
,您将使用 而不是import
。这会影响 Deno 中 NPM 模块的使用。可以使用 NPM 模块,但如果它们使用了require
Deno 中不支持的 或其他功能,则必须进行转换。
Deno 项目中没有node_modules
文件夹。模块会被缓存,并供任何需要它们的项目全局使用。这并不意味着 Deno 需要始终在线的互联网连接。当引用包时,它们会被下载并缓存,这与 NPM 模块的工作方式非常相似。它们只是不直接存储在每个项目中。您也可以指向一个包含要导入模块的本地目录。它不必来自互联网。
顶级异步
Deno 的一个很棒的特性是它拥有对顶级 Promise 的原生绑定。这意味着在顶级Promise 之前,async
你无需声明,直接使用即可!如果你在函数中操作,则必须使用标准的/语法。async
await
async
await
获取内置
而且Fetch
是内置的,无需任何模块。
Window 对象
Deno 有一个window
对象,太棒了!这实现了浏览器和服务器端代码之间的互操作性。这对开发者来说太棒了!
安装
安装 Deno 有多种方法。以下是两个示例。
使用 Shell:
curl -fsSL https://deno.land/x/install/install.sh | sh
使用 PowerShell:
iwr https://deno.land/x/install/install.ps1 -useb | iex
运行代码
要运行代码,请使用deno run
。以下是 Deno 的欢迎脚本:
deno run https://deno.land/std/examples/welcome.ts
让我们看一个更复杂的例子。这里我们将从 Deno 导入一个 HTTP 服务器,并用它在 8000 端口上托管一个基本网站localhost
。
import { serve } from "https://deno.land/std@0.50.0/http/server.ts";
const s = serve({ port: 8000 });
console.log("http://localhost:8000/");
for await (const req of s) {
req.respond({ body: "Hello World\n" });
}
在此示例中,您可以看到顶层的async
实际操作。它只是创建了一个包含“Hello World”的网页。
最后的想法
我发现的一个问题是缺乏模块支持。但 Deno 甚至还没有正式发布。所以我相信我们会看到它迅速发展。目前,Deno 拥有标准模块,这些模块没有外部依赖,并且已经由 Deno 核心团队审核过。以下是他们网站上的一段话:
目的是拥有一套标准的高质量代码,所有 Deno 项目都可以放心使用。
它们还提供了“第三方”模块的链接。您也可以使用Pika.dev查找其他模块。
所以,我们仍然处于Deno.land的起步阶段。很难预测 Node 和 Deno 的未来走向。Deno 看起来很有前途,但我们必须观察它正式发布时的采用率。鉴于已经有这么多开发者在使用并习惯了 Node,我不确定他们会多快想要迁移到 Deno。(如果他们真的会迁移的话)。
截至 2020 年 5 月 9 日,Deno 已发布 RC2 版本。正式版本即将发布。
在我的 YouTube 频道上观看 Deno 的现场演示完整视频:
感谢阅读!
打个招呼!Instagram | Twitter | YouTube
鏂囩珷鏉ユ簮锛�https://dev.to/codestackr/deno-node-js-killer-introduction-demo-ryan-dahl-3cdl