安装 Deno
首先,你需要安装 Deno。你可以通过多种方式安装 Deno,但最简单的方法是使用官方提供的安装脚本。在你的终端中输入以下命令:
curl -fsSL https://deno.land/x/install/install.sh | sh
安装完成后,确保将 Deno 的可执行文件添加到你的系统路径中。这通常意味着将 ~/.deno/bin 添加到你的 PATH 环境变量中。
检查安装是否成功
安装完成后,可以通过运行以下命令来检查 Deno 是否已正确安装:
deno --version
如果一切正常,你应该能看到 Deno 的版本信息。
创建一个简单的 CLI 应用
我们将创建一个简单的 CLI 应用,该应用接收一个 URL 作为参数,并输出该 URL 的 HTTP 响应状态码。
初始化项目
首先,我们需要创建一个新的目录来存放我们的项目:
mkdir deno-cli-app cd deno-cli-app
接下来,我们创建一个 mod.ts 文件,这是 Deno 应用的入口点:
touch mod.ts
编写代码
打开 mod.ts 文件并添加以下代码:
// www.javascriptcn.com code example
import { serve } from "https://deno.land/std@0.148.0/http/server.ts";
async function main() {
const args = Deno.args;
if (args.length === 0) {
console.log("请输入一个 URL 参数");
return;
}
const url = args[0];
try {
const response = await fetch(url);
console.log(`HTTP 状态码: ${response.status}`);
} catch (error) {
console.error(`请求失败: ${error.message}`);
}
}
main();这段代码首先从命令行参数中获取第一个参数,然后尝试访问该 URL 并打印出响应的状态码。
运行应用
要运行这个应用,只需在终端中输入:
deno run mod.ts https://www.example.com
你应该会看到类似如下的输出:
HTTP 状态码: 200
如果 URL 无效或无法访问,你会看到错误消息。
使用 deno install 命令
为了使这个 CLI 工具更易于使用,我们可以将其安装为全局可执行文件。这可以通过 deno install 命令完成。首先,我们需要给我们的脚本起一个名字,并指定它应该被安装在哪里。
在 mod.ts 文件中,添加 export 关键字,使其可以被导出为一个模块:
// mod.ts
export async function main(args: string[]) {
// ... (保持原有逻辑不变)
}然后,使用 deno install 命令将其安装为一个全局可执行文件:
deno install --allow-net --unstable -A -n mycli mod.ts
这里,--allow-net 允许网络访问,--unstable 开启不稳定功能,-A 表示自动处理所有权限,-n mycli 是设置全局命令名为 mycli。
使用全局命令
现在你可以直接通过命令行调用 mycli 来运行你的 CLI 应用了:
mycli https://www.example.com
处理命令行参数和选项
为了使 CLI 更加强大,我们可以添加更多的命令行参数和选项。Deno 提供了内置的 flags 模块来帮助我们处理这些参数。
引入 flags 模块
首先,我们需要引入 flags 模块:
import { parse } from "https://deno.land/std@0.148.0/flags/mod.ts";修改 main 函数
接下来,我们修改 main 函数,以支持更多的命令行参数和选项:
// www.javascriptcn.com code example
async function main() {
const args = Deno.args;
const flags = parse(args);
if (!flags.url) {
console.log("请提供一个 URL 参数");
return;
}
const url = flags.url;
try {
const response = await fetch(url);
console.log(`HTTP 状态码: ${response.status}`);
} catch (error) {
console.error(`请求失败: ${error.message}`);
}
}运行 CLI 应用
现在,你可以通过传递 url 参数来运行 CLI 应用:
mycli --url=https://www.example.com
错误处理和日志记录
为了提高应用的健壮性和用户体验,我们需要添加适当的错误处理和日志记录机制。
添加日志记录
我们可以使用 console.log 和 console.error 来记录日志。为了更好地组织日志,我们可以定义一个专门的日志函数:
function log(message: string) {
console.log(message);
}
function error(message: string) {
console.error(message);
}修改错误处理逻辑
接下来,我们更新错误处理部分,以便使用新的日志函数:
try {
const response = await fetch(url);
log(`HTTP 状态码: ${response.status}`);
} catch (error) {
error(`请求失败: ${error.message}`);
}总结
通过以上步骤,我们已经创建了一个简单的 Deno CLI 应用,能够接收命令行参数并处理网络请求。我们还学习了如何使用 Deno 的内置模块来简化开发过程,并添加了基本的日志记录和错误处理功能。希望这些内容对你有所帮助!