尝试使用 Deno 作为 Node.js 的替代方案

Deno 是一个安全的 JavaScript 和 TypeScript 运行时。
72 位读者喜欢这篇文章。
Tips and gears turning

opensource.com

Deno 是一个简单、现代且安全的 JavaScript 和 TypeScript 运行时。它使用 JavaScript 和 WebAssembly 引擎 V8 并且使用 Rust 构建。该项目在 MIT 许可下开源,由 Ryan Dahl 创建,他也是 Node.js 的开发者。

Deno 的 GitHub 仓库 概述了其目标

  • 只发布一个可执行文件 (deno)
  • 提供安全默认值
    • 除非明确允许,否则脚本无法访问文件、环境或网络。
  • 浏览器兼容:完全用 JavaScript 编写且不使用全局 Deno 命名空间(或进行特性测试)的 Deno 程序的子集,也应该能够在现代 Web 浏览器中运行而无需更改。
  • 提供内置工具,例如单元测试、代码格式化和 linting,以改善开发者体验。
  • 不会将 V8 概念泄漏到用户领域。
  • 能够高效地服务 HTTP

该仓库还描述了 Deno 与 NodeJS 的不同之处

  • Deno 不使用 npm。
    • 它使用引用为 URL 或文件路径的模块。
  • Deno 在其模块解析算法中不使用 package.json
  • Deno 中的所有异步操作都返回一个 promise。因此,Deno 提供了与 Node 不同的 API。
  • Deno 需要文件、网络和环境访问的明确权限。
  • Deno 总是在未捕获的错误时终止。
  • 使用“ES 模块”,不支持 require()。第三方模块通过 URL 导入
    import * as log from "https://deno.land/std@$STD_VERSION/log/mod.ts";

安装 Deno

Deno 的网站上有针对各种操作系统的 安装说明,其完整的源代码可在其 GitHub 仓库 中获得。我运行 macOS,因此我可以使用 HomeBrew 安装 Deno

$ brew install deno

在 Linux 上,您可以从 Deno 的服务器下载、阅读然后运行安装脚本

$ curl -fsSL https://deno.land/x/install/install.sh
$ sh ./install.sh

运行 Deno

安装 Deno 后,运行它的最简单方法是

$ deno run https://deno.land/std/examples/welcome.ts

如果您浏览 欢迎示例,您应该会看到一行打印“Welcome to Deno”和恐龙图标。 这是网站上也可以找到的一个稍微复杂的版本

import { serve } from "https://deno.land/std@0.83.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" });
}

使用 .tx 扩展名保存文件。 使用以下命令运行它

$ deno run --allow-net <name-of-your-first-deno-file.ts>

--allow-net 标志可能不是必需的,但如果您看到类似 error: Uncaught PermissionDenied: network access to "0.0.0.0:8000 的错误,则可以使用它。

现在,打开浏览器并访问 localhost:8080。 它应该打印“Hello, World!”

就这样! 您可以在我录制的这个视频中了解有关 Deno 的更多信息。

您如何看待 Deno? 请在评论中分享您的反馈。

接下来阅读什么
标签
User profile image.
Bryant Jimin Son 是一名 Octocat,这并不是官方头衔,但他喜欢这样称呼自己。他在 GitHub 工作,GitHub 是一家以托管世界上大多数开源项目而闻名的公司。在工作中,他正在探索不同的 git 技术、GitHub Actions、GitHub 安全等。此前,他是 Red Hat 的高级顾问,Red Hat 是一家以其 Linux 服务器和开源贡献而闻名的技术公司。

评论已关闭。

Creative Commons License本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。
© . All rights reserved.