Files
Course/WechatSmallProject/test3/server/index.js

43 lines
2.6 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// 引入 Node.js 的 fs 模块,该模块用于处理文件系统操作,比如读取文件
let fs = require("fs");
// 引入 express 模块express 是一个流行的 Node.js Web 应用框架,用于快速搭建 Web 服务器
var express = require("express");
// 读取 JSON 数据
// 使用 fs.readFileSync 同步读取当前目录下的 data.json 文件
// 第二个参数指定以 UTF-8 编码读取文件,读取结果存储在 jsonStr 变量中
let jsonStr = fs.readFileSync("./data.json", {
encoding: "utf8",
});
// 将读取到的 JSON 字符串解析为 JavaScript 对象,存储在 data 变量中
let data = JSON.parse(jsonStr);
// 创建 Web 服务器对象
// 调用 express 函数创建一个 express 应用实例,后续使用该实例来配置和启动服务器
var app = express();
// 静态资源处理
// 使用 express.static 中间件来处理静态资源,这里指定 public 目录为静态资源目录
// 客户端可以直接访问 public 目录下的文件例如图片、CSS、JavaScript 文件等
app.use(express.static("public"));
// 定义一个 GET 请求的路由,当客户端访问 /data 路径时会触发该路由处理函数
app.get("/data", (req, res) => {
// 使用扩展运算符将 data 数组复制一份到 arr 数组中 。扩展运算符是 ES6 中引入的新特性它可以将一个可迭代对象如数组、字符串、Map、Set 等)展开成一个个独立的元素。数组复制:在代码中 let [ ...arr ] = data 就是利用扩展运算符将 data 数组中的元素展开,然后复制到一个新的数组 arr 中。这样就创建了一个 data 数组的浅拷贝arr 和 data 是两个不同的数组对象,但是它们内部的元素(如果是基本类型)是相同的,或者(如果是引用类型)是指向同一个对象的引用。
let [...arr] = data;
// 计算当前页数据的起始索引
// req.query.page 是客户端请求中传递的页码参数req.query.pageSize 是每页显示的数据条数
let start = (req.query.page - 1) * req.query.pageSize;
// 设置响应头 X-Total-Count用于告知客户端数据的总条数
res.setHeader("X-Total-Count", data.length);
// 从 arr 数组中截取从 start 索引开始,长度为 req.query.pageSize 的数据,并将其作为响应发送给客户端
res.send(arr.splice(start, req.query.pageSize));
});
// 启动服务器,监听 3000 端口
// 当服务器启动成功后,会在控制台输出提示信息,告知服务器的访问地址
app.listen(3000, () => {
console.log("服务器启动成功地址为http://127.0.0.1:3000");
});