Deno:Node.js 杀手?介绍和演示 | Ryan Dahl

2025-06-08

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 模块,但如果它们使用了requireDeno 中不支持的 或其他功能,则必须进行转换。

Deno 项目中没有node_modules文件夹。模块会被缓存,并供任何需要它们的项目全局使用。这并不意味着 Deno 需要始终在线的互联网连接。当引用包时,它们会被下载并缓存,这与 NPM 模块的工作方式非常相似。它们只是不直接存储在每个项目中。您也可以指向一个包含要导入模块的本地目录。它不必来自互联网。

顶级异步

Deno 的一个很棒的特性是它拥有对顶级 Promise 的原生绑定。这意味着在顶级Promise 之前,async你无需声明,直接使用即可!如果你在函数中操作,则必须使用标准的/语法。asyncawaitasyncawait

获取内置

而且Fetch是内置的,无需任何模块。

Window 对象

Deno 有一个window对象,太棒了!这实现了浏览器和服务器端代码之间的互操作性。这对开发者来说太棒了!

安装

安装 Deno 有多种方法。以下是两个示例。

使用 Shell:

curl -fsSL https://deno.land/x/install/install.sh | sh
Enter fullscreen mode Exit fullscreen mode

使用 PowerShell:

iwr https://deno.land/x/install/install.ps1 -useb | iex
Enter fullscreen mode Exit fullscreen mode

运行代码

要运行代码,请使用deno run。以下是 Deno 的欢迎脚本:

deno run https://deno.land/std/examples/welcome.ts
Enter fullscreen mode Exit fullscreen mode

欢迎演示

让我们看一个更复杂的例子。这里我们将从 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" });
}
Enter fullscreen mode Exit fullscreen mode

在此示例中,您可以看到顶层的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
PREV
如何使用 HTML、CSS、JavaScript 构建创意电商网站
NEXT
对 Deno 说“是”?