Deno 是一个新兴的 JavaScript (TypeScript) 运行时环境,相较于 Node.js 具有安全性高、无需全局安装、标准库丰富等特点。虽然 Deno 已经内置了很多有用的工具和库,但是我们还是难免需要使用 npm 包来扩展 Deno 的功能。在本文中,我们将介绍在 Deno 中如何使用 npm 包。
1. 安装 denoify 工具
要使用 npm 包,我们需要先安装一个叫做 denoify 的工具。denoify 可以将 npm 包转换为 Deno 使用的代码,让我们可以在 Deno 中使用这些包。
使用以下命令安装 denoify 工具:
deno install --allow-read --allow-write --allow-net --allow-run https://deno.land/x/denoify/cli.ts
安装完成后,我们可以使用 denoify 转换我们需要使用的 npm 包。
2. 使用 denoify 转换 npm 包
以使用一个简单的 npm 包 axios 为例,我们通过以下步骤来转换它:
- 安装 axios:
npm install axios
- 将 axios 转换为 Deno 可以使用的模块:
denoify node_modules/axios/index.js > axios.ts
这个命令将会生成一个名为 axios.ts 的文件,其中包含了可用于 Deno 中使用 axios 的代码。该输出文件具有以下特点:
- 引入头像
'https://deno.land/x/std/...'这样的 URLs - 对
require函数调用进行了处理
你可以将 ./axios.ts 文件导入到你的 Deno 项目中:
// main.ts
import axios from "./axios";
const response = await axios.get("https://jsonplaceholder.typicode.com/todos/1");
console.log(response.data.title);3. 使用封装好的 Deno 模块
除了使用 denoify 将 npm 包转换为 Deno 可以使用的模块,还可以使用其他人封装好的 Deno 模块。这些模块是特别为 Deno 设计的,可以直接在 Deno 的项目中使用。
以 axios 为例,可以使用一个名为 axios-deno 的 Deno 模块。该模块使用 TypeScript 重新构建了原始的 axios 包,以便完全支持 Deno。首先,我们需要安装 axios-deno:
npm install axios-deno
在 Deno 项目中,你可以直接导入 Axois:
// main.ts
import axios from "https://cdn.skypack.dev/axios-deno";
const response = await axios.get("https://jsonplaceholder.typicode.com/todos/1");
console.log(response.data.title);4. 使用远程模块
如果你的 Deno 项目中使用的库不是 npm 包,而是远程的通过 Git 托管的代码,那么有两种方法可以使用它们:
- 使用类似于已经介绍的 denoify 工具自己将它们转换成 Deno 模块;
- 使用 Deno 隐式的远程模块加载器,例如:
import { someFunction } from "https://example.com/path/to/module.ts";还可以使用标头 #deno-fmt-ignore-file,防止 Deno 格式化代码时发出警告。这意味着 Deno 也能支持自己的私有模块库。
结语
通过本文,我们了解了在 Deno 中使用 npm 包的两种方法,其中一种是使用 denoify 工具和 npm 包一起使用,另一种是使用特别为 Deno 设计的模块。不管采用那种方式,它们都将为我们提供更丰富的 JavaScript 库和工具,使我们可以更好地构建我们的 Deno 应用程序。
Source: FunTeaLearn,Please indicate the source for reprints https://funteas.com/post/6792efb7504e4ea9bd6e90e5