上篇写了一下node的常用的一些方法,下面简单写了一个实例,可以参照上篇博客看。通过node实现学生信息的录入,修改,留言等功能。
资源加载包(package.json)
资源包npm下载即可(执行 npm i 命令)
{
"name": "curd-express",
"version": "1.0.0",
"description": "",
"main": "index.js",
"dependencies": {
"art-template": "^4.13.2",
"body-parser": "^1.18.3",
"bootstrap": "^3.3.7",
"express": "^4.16.4",
"express-art-template": "^1.0.1",
"init": "^0.1.2"
},
"devDependencies": {},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC"
}
node接口
1.资源包引入
const fs = require("fs");
const url = require("url");
//引入express框架
const express = require("express");
//调用express方法
let app = express();
//模板引擎
const template = require("art-template")
//模板引擎简化(不用写读取页面,直接用res.render("index.html",abc);这样去写)
app.engine("html",require("express-art-template"));
//post请求需要引入
const bodyParser = require("body-parser");
app.use(bodyParser.urlencoded({
extended: false }));
app.use(bodyParser.json());
//静态资源加载
app.use("/node_modules",express.static("./node_modules"));
//css样式引入
app.use("/public",express.static("./public"));
2.读取JSON文件,加载首页
app.get("/student",(req,res)=>{
// 取到json数据,转译后取到数组
fs.readFile("db.json",(err,data)=>{
let strdata = data.toString();
strdata = JSON.parse(strdata);
//放入
let strdata1 = strdata["students"];
let abc = {
list:strdata1
};
res.render("index.html",abc);
})
})
3.添加信息页面(静态无操作)
app.get("/new",(req,res)=>{
res.render("addStu.html");
})
4.添加数据信息操作
app.post("/mes",(req,res)=>{
res.redirect("/student");
fs.readFile("db.json",(err,data)=>{
//将二进制的数据转换为字符串
let strdata = data.toString();
//将字符串转换为json对象
strdata = JSON.parse(strdata);
let stuArr = strdata["students"];
let last = stuArr[stuArr.length - 1];
let id = last.id;
let query = req.body;
query.id = id + 1;
stuArr.push(query);
//因为nodejs的写入文件只认识字符串或者二进制数
//所以把json对象转换成字符串重新写入json文件中
let str = JSON.stringify(strdata);
fs.writeFile("db.json",str,function(err){
})
})
})
5.编辑页面
app.get("/edit",(req,res)=>{
let urlObj = url.parse(req.url,true);
// console.log(urlObj.query.id)
fs.readFile("db.json",(err,data)=>{
//将二进制的数据转换为字符串
let strdata = data.toString();
//将字符串转换为json对象
strdata = JSON.parse(strdata);
let stuArr = strdata["students"];
let index = urlObj.query.id;
//将字符串转为整数,如果parseInt的参数不是字符串,则会先转为字符串再转换
index = parseInt(index);
let i = 0;
stuArr.forEach(value=>{
if(value.id === index){
//将修改内容放入页面更新页面可修改区域
res.render("updataStu.html",stuArr[i]);
//console.log(stuArr[i]);
}
i++;
});
});
});
6.更新数据
//在页面中/doedit的后面拼接了当前value对应的id
app.post("/doedit",(req,res)=>{
//获取对应url中所有的数据
let urlObj = url.parse(req.url,true);
//取到对应点击的id值
console.log(urlObj.query.id);
//读取json文件
fs.readFile("db.json",(err,data)=>{
let dataSource = data.toString();
//将字符串转换为json对象
dataSource = JSON.parse(dataSource);
let students = dataSource["students"];
let index = urlObj.query.id;
index = parseInt(index);
let i = 0;
//遍历students的json中的value值
students.forEach(value=>{
//若可以和所点击下标index匹配,执行
if(value.id === index){
//删除原本数据
students.splice(i,1);
let query = req.body;
query.id = value.id;
//替换新数据
students.splice(i,0,query);
let str = JSON.stringify(dataSource);
fs.writeFile("db.json",str,err=>{
});
res.redirect("/student");
}
i++;
});
});
});
7.删除整条数据接口
//在页面中/del的后面拼接了当前value对应的id
app.get("/del",(req,res)=>{
let urlObj = url.parse(req.url,true);
//读取json文件
fs.readFile("db.json",(err