什么是 Deno?
Deno是一种基于 JavaScript 和 TypeScript 的运行时环境,它是由 Node.js 的创始人 Ryan Dahl 开发的。Deno 在很多方面和 Node.js 有相似之处,例如,它们都基于 V8 引擎,且都能用 JavaScript 或 TypeScript 编写应用程序。但是,Deno 比 Node.js 更加注重安全和模块化,它不再使用 npm 包管理器,而是直接使用 URL 导入模块。
为什么使用 Deno 构建交互式 CLI 工具?
交互式 CLI 工具是一种在终端上与用户进行交互的命令行工具,它能够为用户提供简单的 UI 和交互式操作。使用 Deno 去构建交互式 CLI 工具有以下优点:
- Deno 具有更好的安全性和模块化,能够快速导入和使用模块,方便开发人员进行组件化开发;
- TypeScript 作为 Deno 的核心语言,规范了代码结构,增强了代码的可读性;
- 相比 Node.js,Deno 更加轻量级,能够更快速地启动和运行应用程序。
怎样使用 Deno 构建交互式 CLI 工具?
安装 Deno
我们可以通过访问 Deno 的官方网站来安装它,这里不再赘述。完成安装后,使用以下命令来验证是否安装成功:
deno --version
如果能看到版本号,说明 Deno 安装成功。
安装第三方依赖库
我们可以通过直接导入第三方依赖库的 URL 来使用它们,例如,我们可以使用以下代码导入 cliffy
库实现交互式 CLI 工具:
import { Command } from "https://deno.land/x/cliffy/command/mod.ts";
编写交互式 CLI 工具
交互式 CLI 工具由多个命令构成,每个命令都可以有多个选项和参数。我们可以使用 cliffy
库的 Command
类来构建命令。以下是一个简单的例子:
-- -------------------- ---- ------- ------ - ------- - ---- -------------------------------------------- ------ - ----- ------ ------ - ---- -------------------------------------- ----- --- - --- --------- --------------- ----------------- --------------- ------ --- ------ ----------- ---- ----- --- -- ---- ---------- --- --------------- --------------- ---- ----- -- ---------- ---------------- ------- ---------- ---- -- - ----- ------ -- -- - ------------------------------ ------------ -- ----------------- --- --- ----------------- --------------- ---- ------- -- ---------- ------------ --------- ------------------ -- ------- -- ------ ---------- ---- -- - ----- ------- -------- --- -- -- - ------------------------------- ----------- -- ----------------- ----------------- - --------------- - ------ --- ----- --------------------------
代码说明:
- 第 1 行和第 2 行导入了
Command
类和color
模块; - 第 4 ~ 7 行使用
Command
类创建了一个命令对象,并指定了命令的名称、版本号、描述和帮助信息; - 第 9 ~ 14 行定义了一个名为
hello
的子命令,它有一个名为name
的参数,参数类型为 string,用来指定打招呼的对象;example
方法用来添加示例;action
方法用来指定当执行该命令时需要执行的回调函数;
- 第 16 ~ 25 行定义了一个名为
goodbye
的子命令,它有一个名为name
的参数和一个名为message
的选项,选项类型为 string,用来指定道别的消息; - 第 27 行解析命令行参数。
运行交互式 CLI 工具
将上述代码保存为 mytool.ts
文件后,在终端中输入以下命令运行:
deno run --allow-env --allow-net --allow-read mytool.ts
--allow-env
参数表示允许访问环境变量,--allow-net
参数表示允许访问网络,--allow-read
参数表示允许读取文件系统。
我们可以通过以下命令获取工具的帮助信息:
deno run --allow-env --allow-net --allow-read mytool.ts --help
输出如下:
-- -------------------- ---- ------- - ------ --- ---- ------ ------ ------------ ------ --- ------ ------ ---- ----------- --- --------- ------ ------- ----------- ------------ ------- --- ------- -- -------- ---- ------ ---- ------- -- --- ---- -- --- ----- ------------- ----- --- ----- -- --------
我们可以执行以下命令验证程序功能:
deno run --allow-env --allow-net --allow-read mytool.ts hello --name world
输出如下:
Hello, world!
deno run --allow-env --allow-net --allow-read mytool.ts goodbye --name world --message "nice to meet you"
输出如下:
Goodbye, world! nice to meet you
总结
本文介绍了如何使用 Deno 构建交互式 CLI 工具。在编写交互式 CLI 工具时,我们可以使用 cliffy
库来构建命令,用 TypeScript 语言规范代码结构,并且在执行时需要开启对环境变量、网络和文件系统的访问权限。Deno 能够提供更加安全和模块化的环境,同时启动和运行更加轻量级的应用程序。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/645c57e4968c7c53b0eadaa9