📅  最后修改于: 2023-12-03 15:23:56.713000             🧑  作者: Mango
制作一个待办事项列表可以帮助我们记录和管理工作和生活中的各种任务,并提醒我们完成任务的进度和时间。在本文中,我们将介绍如何使用 NodeJS 实现待办事项列表。
在本文中,我们将使用 NodeJS 和一些常用的软件包和工具来制作待办事项列表。我们将使用 SQLite 数据库存储和管理我们的任务列表,并使用 Express 框架来实现我们的 Web 服务器。
首先,我们需要在我们的计算机上安装 NodeJS。你可以在 NodeJS 官网 下载 NodeJS 的安装包,并根据提示进行安装。
在 NodeJS 中,我们使用 npm(Node Package Manager)来管理我们的项目。使用如下命令在你的项目文件夹中初始化一个 NodeJS 项目:
npm init
此命令将引导你输入项目的名称、作者、许可证等信息,并创建一个 package.json
文件用于管理我们的项目软件包和依赖项。
我们将使用以下软件包和工具来实现我们的待办事项列表:
Express:一个流行的 NodeJS Web 应用程序框架。
SQLite3:一个轻量级的关系型数据库管理系统。
Body-parser:一个 NodeJS 中间件,用于解析 HTTP POST 请求的正文。
使用下面的命令来安装这些软件包:
npm install express sqlite3 body-parser --save
此命令将安装这些软件包并将它们添加到项目的 package.json
文件中。
我们需要创建一个 SQLite 数据库来存储我们的待办事项列表。使用 SQLite 命令行工具来创建一个名为 tasks.db
的数据库:
sqlite3 tasks.db
接着,我们将创建一个名为 tasks
的表格用于存储我们的任务列表。我们可以使用以下 SQL 命令来创建表格:
CREATE TABLE tasks (
id INTEGER PRIMARY KEY,
description TEXT,
status INTEGER
);
此命令将创建一个 tasks
表格,它包含一个名为 id
的整数主键、一个名为 description
的文本字段表示任务描述和一个名为 status
的整数字段表示任务状态。
我们将使用 Express 框架创建一个 Web 服务器,用于实现我们的待办事项列表。在你的项目文件夹中创建名为 app.js
的文件,并输入以下代码:
const express = require('express');
const sqlite3 = require('sqlite3');
const bodyParser = require('body-parser');
const app = express();
// 配置 body-parser 中间件
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
// 配置 SQLite 数据库
const db = new sqlite3.Database('tasks.db');
// 获取所有任务列表
app.get('/tasks', (req, res) => {
const sql = 'SELECT * FROM tasks ORDER BY id DESC';
db.all(sql, [], (err, rows) => {
if (err) {
res.status(500).json({ error: err.message });
return;
}
res.json(rows);
});
});
// 创建一项新任务
app.post('/tasks', (req, res) => {
const { description } = req.body;
if (!description) {
res.status(400).json({ error: 'Task description is required.' });
return;
}
const sql = 'INSERT INTO tasks (description, status) VALUES (?, ?)';
const params = [description, 0];
db.run(sql, params, function (err) {
if (err) {
res.status(500).json({ error: err.message });
return;
}
const newTask = {
id: this.lastID,
description: description,
status: 0
};
res.json(newTask);
});
});
// 更新一项任务状态
app.put('/tasks/:id', (req, res) => {
const taskId = req.params.id;
const { status } = req.body;
if (!status || (status != 0 && status != 1)) {
res.status(400).json({ error: 'Valid task status is required.' });
return;
}
const sql = 'UPDATE tasks SET status = ? WHERE id = ?';
const params = [status, taskId];
db.run(sql, params, function (err) {
if (err) {
res.status(500).json({ error: err.message });
return;
}
res.json({ message: 'Task status updated.' });
});
});
// 删除一项任务
app.delete('/tasks/:id', (req, res) => {
const taskId = req.params.id;
const sql = 'DELETE FROM tasks WHERE id = ?';
const params = [taskId];
db.run(sql, params, function (err) {
if (err) {
res.status(500).json({ error: err.message });
return;
}
res.json({ message: 'Task deleted.' });
});
});
// 启动服务器
const port = process.env.PORT || 3000;
app.listen(port, () => {
console.log(`Server running on port ${port}`);
});
此代码将在本地计算机上启动一个 Web 服务器,监听在 3000 端口。当收到 HTTP GET、POST、PUT 或 DELETE 请求时,它将查询或更新 SQLite 数据库中的任务列表。
我们可以使用 Postman 工具来测试我们的服务器功能。在 Postman 中,输入 http://localhost:3000/tasks 并发送一个 HTTP GET 请求,你将收到我们的服务器返回的所有任务列表数据。
当你发送一个 HTTP POST 请求到 http://localhost:3000/tasks,同时携带一个名为 description
的参数,你将创建一项新的任务。
当你发送一个 HTTP PUT 请求到 http://localhost:3000/tasks/1(其中 1
是一项存在的任务 ID),同时携带一个名为 status
的参数(值为 0
或 1
),你将更新一项任务的状态。
当你发送一个 HTTP DELETE 请求到 http://localhost:3000/tasks/1(其中 1
是一项存在的任务 ID),你将删除一项任务。
在本文中,我们介绍了如何使用 NodeJS、SQLite 和 Express 框架来制作一个待办事项列表。使用这个例子,我们展示了如何创建和配置服务器、数据库和路由以及如何实现 CRUD(创建、读取、更新和删除)操作。希望这个例子对你有所启发,为你在实现自己的 Web 应用程序时提供一些灵感。