项目目录:
- app.js ------ 主要代码如下:
- src ------- 静态文件,json、html、image
app.js
// 引入express 包
const express = require("express");
// fs 文件操作内置模块
const fs = require("fs");
// path 文件目录路径内置模块
const path = require("path");
// 数据
const db = require("./src/mock/data.json");
// 实例化 express 给 app 实例对象
const app = express();
// 开放静态资源文件src
app.use(express.static("src"));
// post 数据转换
app.use(express.json());
app.use(express.urlencoded());
// 配置默认页
app.get("/", (req, res) => {
// sendFile 接收 绝对路径。 __dirname :文件所在磁盘的路径(指向文件的绝对路径)
res.sendFile(path.join(__dirname, "/src/index.html"));
})
// 接口位置
// 登录
app.get("/login", (req, res) => {
let off = db.some(item => {
return item.name == req.query.name && item.pwd == req.query.pwd;
})
if (off) {
res.send({ code: 0, msg: "登录成功" })
} else {
res.send({ code: 1, msg: "登录失败" })
}
})
// 添加数据 (增)
app.post("/add", (req, res) => {
// 根据前端传过来的下标删除对应的下标数据
db.push(req.body);
fs.writeFileSync("./src/mock/data.json",JSON.stringify(db));
res.send({code:0,msg:"添加成功!"});
})
// 删除数据 (删)
app.get("/del", (req, res) => {
// 根据前端传过来的下标删除对应的下标数据
db.splice(req.query.uid, 1);
fs.writeFileSync("./src/mock/data.json",JSON.stringify(db));
res.send({code:0,msg:"删除成功!"});
})
// 修改数据 (改)
app.post("/updata", (req, res) => {
// 根据前端传过来的下标删除对应的下标数据
db.splice(req.body.uid,1,req.body);
fs.writeFileSync("./src/mock/data.json",JSON.stringify(db));
res.send({code:0,msg:"修改成功!"});
})
// 查询所有 (查)
app.get("/list", (req, res) => {
// 把数据直接返回给前端
res.send(db);
})
// 查询单个数据(查询详情)
app.get("/listOne", (req, res) => {
// 根据前端传过来的下标查询当前的数据
let data = db[req.query.uid];
res.send(data);
})
// 模糊查询
app.post("/search", (req, res) => {
// 根据前端传过来的下标删除对应的下标数据
let data = db.filter(item=>{
return item.name.includes(req.body.name);
})
res.send(data);
})
// 分页
// 条数
let pagSize = 5;
// 总页数
let page = Math.ceil(db.length / pagSize);
// 页码 1 2 3 4 5 ...
let arr = [];
for (let index = 1; index <= page; index++) {
arr.push(index); //1 2 3 4 5 ...
}
// 默认渲染第一页5条
app.get("/listPage", (req, res) => {
// 第一次渲染的条数
let start = db.slice(0,pagSize);
// 给前端返回页码和默认条数
res.send({arr,start});
})
// 分页
app.get("/nextPage", (req, res) => {
// 当前页码 =(当前页码 - 1)* 条数
let s = (req.query.id - 1) * pagSize;
// slice 截取当前页码对应的数据
let data = db.slice(s,s + pagSize);
// 返给前端
res.send(data);
})
// 设置启动端口号
app.listen(8083, () => {
console.log("8083启动");
})
项目结构:
– src (数据,页面静态资源 js css img json)
– app.js (配置文件 如上图)
启动
当前 app.js 同级 运行
node app.js (node-dev app.js)