发布于 2026-01-06 4 阅读
0

末日的开端?Deno vs Node.js

末日的开端?Deno vs Node.js

末日的开端?Deno vs Node.js

Node.js 的创始人后悔了!

没错,你没听错,但为什么呢?

Node.js 的创始人 Ryan Dahl 认为他在设计 Node.js 时犯了很多错误。

让我们来看看这些错误是什么。

  1. 不拘泥于 Promise:Promise 是 async/await 的必要抽象。
  2. 安全性:在 Node.js 程序中,您可以访问各种系统调用。
  3. GYP 构建系统:后来 Chrome 弃用了该系统,但 Node 继续使用它。
  4. package.json:这使得Node.js依赖于NPM(私有控制的仓库),并引入了模块目录的概念。
  5. node_modules:宇宙中最重的物体。它使模块解析算法变得复杂。
  6. require("module"):没有.js扩展名,这不是JS类型的index.js,这种不必要的复杂模块加载系统只是为了看起来花哨。

Ryan Dahl提出了一个解决Node.js问题的方案。

DENO:一个安全的 JavaScript 和 TypeScript 运行时环境

  • 内置于 Rust 语言
  • 采用V8发动机
  • 东京
  • 开箱即用,支持 TypeScript。

以单个可执行文件的形式发布,没有任何依赖项。是的,无需安装任何依赖项
。默认安全。无文件、网络或环境访问权限(除非显式启用)。
内置实用程序,例如依赖项检查器 (deno info) 和代码格式化程序 (deno fmt)。
打包成一个单独的 JavaScript 文件。

Node.js 与 Deno

让我们看看它与 Node.js 相比表现如何。

  • Deno 不使用 npm
  • 它使用以 URL 或文件路径形式引用的模块。
  • Deno 的模块解析算法不使用 package.json 文件。
  • Deno 中的所有异步操作都会返回一个 Promise 对象。因此,Deno 提供的 API 与 Node 不同。
  • Deno 需要明确的文件、网络和环境访问权限。
  • Deno总是因为未被发现的错误而死亡。
  • 它使用“ES模块”,不支持require()函数。第三方模块通过URL导入,例如:
import * as log from "https://deno.land/std/log/mod.ts";
Enter fullscreen mode Exit fullscreen mode

远程代码会在首次执行时被获取并缓存,并且只有在使用 `--reload` 标志再次运行时才会更新。因此,即使您离线,它也能稍后运行。
从远程 URL 加载的模块/文件旨在保持不可变性并可缓存。

Deno 安装

现在让我们看看安装 Deno 有多么容易。

在终端运行以下命令

Shell(Mac、Linux):

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

PowerShell(Windows):

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

参考:Deno.land 网站

现在让我们来构建 HelloWorld!

创建一个名为 welcome.ts 的文件,并添加基本的 JavaScript 代码。

console.log('Hello World!');
Enter fullscreen mode Exit fullscreen mode

从命令行运行

$ deno run welcome.ts
Hello World!
Enter fullscreen mode Exit fullscreen mode

您无需下载即可直接从 URL 运行程序。

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

难道不是这么简单吗?

您是否想观看一段关于使用 React + Deno 实现功能性 CRUD 操作的详细视频?

请发表意见。

你可以在这里找到关于Deno 与 Node.js 的视频:Node.js 的终结之始
Deno 与 Node.js 对比

您还可以参考更多关于 Deno 的教程,例如
Deno.js 教程:安装、HTTP 服务器、Deno 路由、Deno MySQL 和 Deno REST API(使用 MySQL)。
Deno.js教程:安装、HTTP服务器、Deno路由、Deno MySQL和Deno REST API(基于MySQL)

Deno安装:
如何在Deno上运行HTTP服务器?
如何在Deno上使用Oak中间件进行路由?
如何在Deno中连接MySQL数据库?
如何在Deno上使用MySQL构建REST API?

文章来源:https://dev.to/webgile/the-beginning-of-the-end-deno-vs-node-js-149i