安装
npm i express --save
npm i art-template --save
npm i express-art-template --save
npm i body-parser --save
npm i nodemon
引用
app.js
var express = require('express');
var bodyParser = require('body-parser')
var router = require('./router');
var app = express();
app.use('/node_modules/', express.static('./node_modules/'))
app.use('/public/', express.static('./public/'));
app.engine('html', require('express-art-template'));
app.use(bodyParser.urlencoded({extends:false}))
app.use(bodyParser.json())
app.use(router)
app.listen(3000, () => {
console.log('running…… http://127.0.0.1:3000');
})
router.js
var fs = require('fs');
var express = require('express')
var router = express.Router();
var Students = require('./students');
router.get('/', (req, res) => {
res.render('index.html')
})
router.get('/students', function (req, res) {
Students.find(function (err, students) {
if (err) {
return res.status(500).send('Server error');
}
res.render('students.html', {
dashboard: [
'苹果',
'橘子',
'香蕉',
'西瓜'
],
students: students
})
})
})
router.get('/students/new', function (req, res) {
res.render('new.html')
})
router.post('/students/new', function (req, res) {
Students.save(req.body, function (err) {
if (err) {
return res.status(500).send('Server error');
}
res.redirect('/students')
})
})
router.get('/students/edit', function (req, res) {
Students.findById(parseInt(req.query.id), function (err, student) {
if (err) {
return res.status(500).send('Server error');
}
res.render('edit.html', {
student: student
})
})
})
router.post('/students/edit', function (req, res) {
Students.updata(req.body, function (err) {
if (err) {
return res.status(500).send('Server error');
}
res.redirect('/students')
})
})
router.get('/students/delete', function (req, res) {
Students.delete(parseInt(req.query.id), function (err) {
if (err) {
return res.status(500).send('Server error')
}
res.redirect('/students');
})
})
module.exports = router;
students.js
var fs = require('fs');
var daPath = './db.json'
exports.find = function (callback) {
fs.readFile(daPath, 'utf8', function (err, data) {
if (err) {
return callback(err)
}
callback(null, JSON.parse(data).students);
})
}
exports.save = function (student, callback) {
fs.readFile(daPath, 'utf8', function (err, data) {
if (err) {
return callback(err)
}
var students = JSON.parse(data).students;
student.id = students.length
students.push(student);
var ret = JSON.stringify({
students: students
})
fs.writeFile(daPath, ret, function (err, data) {
if (err) {
return callback(err)
}
callback(null)
})
})
}
exports.updata = function (student, callback) {
fs.readFile(daPath, 'utf8', function (err, data) {
if (err) {
return callback(err)
}
var students = JSON.parse(data).students;
student.id = parseInt(student.id)
var updataStudents = students.find(e => {
return e.id == student.id
});
for (const key in student) {
updataStudents[key] = student[key]
}
var ret = JSON.stringify({
students: students
})
fs.writeFile(daPath, ret, function (err, data) {
if (err) {
return callback(err)
}
callback(null)
})
})
}
exports.delete = function (id,callback) {
fs.readFile(daPath, 'utf8', function (err, data) {
if (err) {
return callback(err)
}
var students = JSON.parse(data).students;
var delStudents = students.filter(e => {
return e.id != id;
});
var ret = JSON.stringify({
students: delStudents
})
fs.writeFile(daPath, ret, function (err, data) {
if (err) {
return callback(err)
}
callback(null)
})
})
}
exports.findById = function (id, callback) {
fs.readFile(daPath, 'utf8', function (err, data) {
if (err) {
return callback(err)
}
var students =JSON.parse(data).students;
var ret = students.find(function(item){
return item.id ===id;
})
callback(null,ret)
})
}
db.json
{
"students": [{
"name": "刘备",
"gender": "0",
"age": "13",
"id": 0
}, {
"name": "关羽",
"gender": "0",
"age": "13",
"id": 1
}, {
"name": "张飞",
"gender": "0",
"age": "13",
"id": 2
}, {
"name": "赵云",
"gender": "0",
"age": "12",
"id": 3
}, {
"name": "小乔",
"gender": "1",
"age": "11",
"id": 4
}, {
"name": "大乔",
"gender": "1",
"age": "12",
"id": 5
}]
}