Deno 是一个使用 JavaScript 和 TypeScript 编写的现代运行时环境,它可以用于编写服务器端应用程序和命令行工具。虽然 Deno 内置了模块系统,但是在 Deno 中使用一些常见的 npm 包也很常见,比如 Lodash、Axios 等。
本文将介绍如何在 Deno 中使用 npm 包管理器安装模块,具体包括以下内容:
- 安装 Deno
- 使用 npm 包管理器安装模块
- 示例代码
安装 Deno
在开始之前,需要先安装 Deno 环境。可以从官网 https://deno.land/ 下载安装程序。
安装完成后,打开终端窗口输入以下命令,可以查看 Deno 版本号:
deno --version
如果输出了 Deno 的版本号,表示安装成功。
使用 npm 包管理器安装模块
在 Deno 中使用 npm 包,需要使用到 import_map.json
文件。这个文件是用来指定 Deno 从哪里下载导入的模块,类似于 package.json 文件。
首先,我们需要创建一个空的 import_map.json
文件。在终端窗口执行以下命令:
touch import_map.json
然后,在 import_map.json
文件中添加以下内容:
{ "imports": {} }
这里我们创建了一个空的 imports
对象,用于指定 npm 包的名称和版本。例如,如果要使用 Lodash 4.17.21 版本,可以将以下内容添加到 imports
对象中:
{ "imports": { "lodash": "https://cdn.skypack.dev/lodash@4.17.21" } }
这里我们使用了 Skypack 服务提供的 Lodash CDN,可以替代 npm 官网提供的 CDN,而且速度更快。
现在,我们可以使用 deno run
命令来执行一个简单的脚本,以验证是否成功安装了 Lodash 模块,以下是示例代码:
import _ from 'lodash'; console.log(_.chunk(['a', 'b', 'c', 'd'], 2));
执行命令:
deno run --import-map=import_map.json index.ts
这里指定了 import_map.json
文件,并执行了 index.ts
文件。如果一切顺利,应该会看到以下结果:
[ [ 'a', 'b' ], [ 'c', 'd' ] ]
示例代码
以下是一个使用 Axios 获取 JSON 数据的示例代码:
-- -------------------- ---- ------- ------ ----- ---- -------- ----- --- - --------------------------------------------- ---------------------------- -- - --------------------------- -------------- -- - --------------------- ---
执行命令:
deno run --import-map=import_map.json index.ts
如果一切顺利,应该会看到以下结果:
-- -------------------- ---- ------- - - ----- -- ------- ------- -------- ----------- ------- -------- -------------------- ---------- - --------- ------ ------- -------- ----- ----- ------- -------------- ---------- ------------- ------ - ------ ----------- ------ --------- - -- -------- --------------- -------- ---------- ---------------- ---------- - ------- ------------------ -------------- -------------- ------------- ------------ ----- -------- --------- ---------- - -- -- --- -
总结
本文介绍了如何在 Deno 中使用 npm 包管理器安装模块的步骤,以及如何使用 import_map.json
文件来指定 npm 包的名称和版本。阅读本文后,你应该可以在 Deno 中快速方便地使用常见的 npm 包,加快开发进度。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/651e8ace95b1f8cacd63a092