📜  使用 Node.js 创建 COVID-19 跟踪器 CLI(1)

📅  最后修改于: 2023-12-03 15:06:49.001000             🧑  作者: Mango

使用 Node.js 创建 COVID-19 跟踪器 CLI

在这篇文章中,我们将使用 Node.js 创建一个命令行工具来跟踪 COVID-19 病例。我们将使用公共 API 来获取全球和特定国家的病例信息,然后在终端中输出它们。

技术栈
  • Node.js
  • Axios
  • Commander
  • Chalk
步骤
  1. 通过 npm 安装必要的依赖:

    npm install axios commander chalk
    
  2. 调用 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);
      }
    }
    
  3. 处理并输出数据

    在获得数据后,我们需要将其解析并以人类可读的格式输出。这里我们将使用 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);
    
  4. 运行命令行工具

    目前,我们已经编写好了我们的命令行工具。要运行它,我们只需要在终端中运行 node app.js <command> [arguments] 命令,其中 <command> 是我们定义的命令名称,[arguments] 是传递给命令的参数。

    node app.js global
    node app.js China
    

    demo screenshot

结论

一个简单的 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
  1. 调用 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);
      }
    }
    
  2. 处理并输出数据

    在获得数据后,我们需要将其解析并以人类可读的格式输出。这里我们将使用 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);
    
  3. 运行命令行工具

    目前,我们已经编写好了我们的命令行工具。要运行它,我们只需要在终端中运行 node app.js <command> [arguments] 命令,其中 <command> 是我们定义的命令名称,[arguments] 是传递给命令的参数。

    node app.js global
    node app.js China
    

    demo screenshot

结论

一个简单的 COVID-19 跟踪器 CLI 已经由 Node.js 创造出来了。希望这篇文章能够帮助初学者更好地理解 Node.js 和相关工具的用法。完整代码片段已上传到 Github