返回

Node.js 上使用命令行操作 TODO

前端

下载

首先,我们需要下载必要的 npm 包。我们可以使用以下命令来安装 Commander.js 和 chalk:

npm install commander chalk

下载完成后,我们可以通过以下命令查看版本:

node_modules/.bin/commander --version

使用方法

现在,我们可以开始编写我们的 TODO 应用程序了。首先,我们需要创建一个新的文件,例如 todo.js。然后,我们可以添加以下代码:

const program = require('commander');
const chalk = require('chalk');

program
  .command('add <task>')
  .description('添加一个任务')
  .action((task) => {
    // 在这里添加任务到数据库
    console.log(chalk.green(`添加任务:${task}`));
  });

program
  .command('list')
  .description('列出所有任务')
  .action(() => {
    // 在这里从数据库获取所有任务
    console.log(chalk.blue('任务列表:'));
    // 在这里循环并打印每个任务
  });

program
  .command('done <task>')
  .description('完成一个任务')
  .action((task) => {
    // 在这里从数据库标记任务为已完成
    console.log(chalk.green(`已完成任务:${task}`));
  });

program
  .command('clear')
  .description('清空所有任务')
  .action(() => {
    // 在这里从数据库清除所有任务
    console.log(chalk.red('已清空所有任务'));
  });

program.parse(process.argv);

现在,我们可以运行以下命令来添加一个任务:

node todo.js add "买牛奶"

这将在控制台输出以下内容:

添加任务:买牛奶

我们还可以运行以下命令来列出所有任务:

node todo.js list

这将在控制台输出以下内容:

任务列表:
1. 买牛奶

我们可以运行以下命令来完成一个任务:

node todo.js done "买牛奶"

这将在控制台输出以下内容:

已完成任务:买牛奶

我们还可以运行以下命令来清空所有任务:

node todo.js clear

这将在控制台输出以下内容:

已清空所有任务

单元测试

为了确保我们的 TODO 应用程序正常工作,我们可以编写一些单元测试。我们可以使用流行的测试框架 Jest 来编写这些测试。

首先,我们需要创建一个新的文件,例如 todo.test.js。然后,我们可以添加以下代码:

const { add, list, done, clear } = require('./todo');

describe('TODO', () => {
  it('should add a task', () => {
    const task = '买牛奶';
    add(task);
    const tasks = list();
    expect(tasks).toContain(task);
  });

  it('should list all tasks', () => {
    const tasks = ['买牛奶', '做饭', '洗衣服'];
    tasks.forEach((task) => {
      add(task);
    });
    const listedTasks = list();
    expect(listedTasks).toEqual(tasks);
  });

  it('should mark a task as done', () => {
    const task = '买牛奶';
    add(task);
    done(task);
    const tasks = list();
    expect(tasks).not.toContain(task);
  });

  it('should clear all tasks', () => {
    const tasks = ['买牛奶', '做饭', '洗衣服'];
    tasks.forEach((task) => {
      add(task);
    });
    clear();
    const listedTasks = list();
    expect(listedTasks).toEqual([]);
  });
});

现在,我们可以运行以下命令来运行测试:

npm test

这将运行所有的单元测试并输出测试结果。

项目效果演示

现在,我们可以运行以下命令来查看项目的版本号:

node todo.js --version

这将在控制台输出以下内容:

1.0.0

添加

我们可以运行以下命令来添加一个任务:

node todo.js add "买牛奶"

这将在控制台输出以下内容:

添加任务:买牛奶

列出

我们可以运行以下命令来列出所有任务:

node todo.js list

这将在控制台输出以下内容:

任务列表:
1. 买牛奶

完成

我们可以运行以下命令来完成一个任务:

node todo.js done "买牛奶"

这将在控制台输出以下内容:

已完成任务:买牛奶

清空

我们可以运行以下命令来清空所有任务:

node todo.js clear

这将在控制台输出以下内容:

已清空所有任务