📅  最后修改于: 2023-12-03 15:06:49.001000             🧑  作者: Mango
在这篇文章中,我们将使用 Node.js 创建一个命令行工具来跟踪 COVID-19 病例。我们将使用公共 API 来获取全球和特定国家的病例信息,然后在终端中输出它们。
通过 npm
安装必要的依赖:
npm install axios commander chalk
调用 API 获取数据
我们将使用 Novel COVID API 来获取数据。官方文档中提供了许多 API 端点来获取全球和特定国家/省份的病例信息。我们将使用 /v3/covid-19/all
获取全球数据,使用 /v3/covid-19/countries/:countryName
获取特定国家/省份数据。在此之前,我们需要使用 axios
模块发出 GET 请求并获取响应数据。
const axios = require("axios");
async function fetchData(url) {
try {
const response = await axios.get(url);
return response.data;
} catch (error) {
console.log(error);
}
}
处理并输出数据
在获得数据后,我们需要将其解析并以人类可读的格式输出。这里我们将使用 chalk
模块来添加颜色。我们还将使用 commander
模块来添加命令行选项和参数。
const chalk = require("chalk");
const commander = require("commander");
const { version } = require("./package.json");
commander.version(version, "-v, --version");
commander
.command("<country>")
.description("Get COVID-19 data for a specific country or province")
.action(async (country) => {
const url = `https://disease.sh/v3/covid-19/countries/${country}?yesterday=true&strict=true`;
const response = await fetchData(url);
console.log(chalk.yellow(`Country: ${response.country}`));
console.log(chalk.cyan(`Total Cases: ${response.cases}`));
console.log(chalk.red(`Total Deaths: ${response.deaths}`));
console.log(chalk.green(`Total Recovered: ${response.recovered}`));
});
commander
.command("global")
.description("Get global COVID-19 data")
.action(async () => {
const url = "https://disease.sh/v3/covid-19/all?yesterday=true";
const response = await fetchData(url);
console.log(chalk.cyan(`Total Cases: ${response.cases}`));
console.log(chalk.red(`Total Deaths: ${response.deaths}`));
console.log(chalk.green(`Total Recovered: ${response.recovered}`));
});
commander.parse(process.argv);
运行命令行工具
目前,我们已经编写好了我们的命令行工具。要运行它,我们只需要在终端中运行 node app.js <command> [arguments]
命令,其中 <command>
是我们定义的命令名称,[arguments]
是传递给命令的参数。
node app.js global
node app.js China
一个简单的 COVID-19 跟踪器 CLI 已经由 Node.js 创造出来了。希望这篇文章能够帮助初学者更好地理解 Node.js 和相关工具的用法。完整代码片段已上传到 Github。
# 使用 Node.js 创建 COVID-19 跟踪器 CLI
在这篇文章中,我们将使用 Node.js 创建一个命令行工具来跟踪 COVID-19 病例。我们将使用公共 API 来获取全球和特定国家的病例信息,然后在终端中输出它们。
## 技术栈
- Node.js
- Axios
- Commander
- Chalk
## 步骤
1. 通过 `npm` 安装必要的依赖:
```bash
npm install axios commander chalk
调用 API 获取数据
我们将使用 Novel COVID API 来获取数据。官方文档中提供了许多 API 端点来获取全球和特定国家/省份的病例信息。我们将使用 /v3/covid-19/all
获取全球数据,使用 /v3/covid-19/countries/:countryName
获取特定国家/省份数据。在此之前,我们需要使用 axios
模块发出 GET 请求并获取响应数据。
const axios = require("axios");
async function fetchData(url) {
try {
const response = await axios.get(url);
return response.data;
} catch (error) {
console.log(error);
}
}
处理并输出数据
在获得数据后,我们需要将其解析并以人类可读的格式输出。这里我们将使用 chalk
模块来添加颜色。我们还将使用 commander
模块来添加命令行选项和参数。
const chalk = require("chalk");
const commander = require("commander");
const { version } = require("./package.json");
commander.version(version, "-v, --version");
commander
.command("<country>")
.description("Get COVID-19 data for a specific country or province")
.action(async (country) => {
const url = `https://disease.sh/v3/covid-19/countries/${country}?yesterday=true&strict=true`;
const response = await fetchData(url);
console.log(chalk.yellow(`Country: ${response.country}`));
console.log(chalk.cyan(`Total Cases: ${response.cases}`));
console.log(chalk.red(`Total Deaths: ${response.deaths}`));
console.log(chalk.green(`Total Recovered: ${response.recovered}`));
});
commander
.command("global")
.description("Get global COVID-19 data")
.action(async () => {
const url = "https://disease.sh/v3/covid-19/all?yesterday=true";
const response = await fetchData(url);
console.log(chalk.cyan(`Total Cases: ${response.cases}`));
console.log(chalk.red(`Total Deaths: ${response.deaths}`));
console.log(chalk.green(`Total Recovered: ${response.recovered}`));
});
commander.parse(process.argv);
运行命令行工具
目前,我们已经编写好了我们的命令行工具。要运行它,我们只需要在终端中运行 node app.js <command> [arguments]
命令,其中 <command>
是我们定义的命令名称,[arguments]
是传递给命令的参数。
node app.js global
node app.js China
一个简单的 COVID-19 跟踪器 CLI 已经由 Node.js 创造出来了。希望这篇文章能够帮助初学者更好地理解 Node.js 和相关工具的用法。完整代码片段已上传到 Github。