版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
- 目录结构
- index.js
/*
图书管理系统-入口文件
*/
const express = require('express');
const path = require('path');
const router = require('./router.js');
const template = require('art-template');
const bodyParser = require('body-parser');
const app = express();
// 启动静态资源服务
app.use('/www',express.static('public'));
// 设置模板引擎
// 设置模板的路径
app.set('views',path.join(__dirname,'views'));
// 设置模板引擎
app.set('view engine','art');
// 使express兼容art-template模板引擎
app.engine('art', require('express-art-template'));
// 处理请求参数
// 挂载参数处理中间件(post)
app.use(bodyParser.urlencoded({ extended: false }));
// 处理json格式的参数
app.use(bodyParser.json());
// 启动服务器功能
// 配置路由
app.use(router);
// 监听端口
app.listen(3000,()=>{
console.log('running...');
});
- router.js
/*
路由模块
*/
const express = require('express');
const router = express.Router();
const service = require('./service.js');
// 路由处理
// 渲染主页
router.get('/',service.showIndex);
// 添加图书(跳转到添加图书的页面)
router.get('/toAddBook',service.toAddBook);
// 添加图书(提交表单)
router.post('/addBook',service.addBook);
// 跳转到编辑图书信息页面
router.get('/toEditBook',service.toEditBook);
// 编辑图书提交表单
router.post('/editBook',service.editBook);
// 删除图书信息
router.get('/deleteBook',service.deleteBook);
module.exports = router;
- service.js
/*
业务模块
*/
const data = require('./data.json');
const path = require('path');
const fs = require('fs');
// 自动生成图书编号(自增)
let maxBookCode = ()=>{
let arr = [];
data.forEach((item)=>{
arr.push(item.id);
});
return Math.max.apply(null,arr);
}
// 把内存数据写入文件
let writeDataToFile = (res) => {
fs.writeFile(path.join(__dirname,'data.json'),JSON.stringify(data,null,4),(err)=>{
if(err){
res.send('server error');
}
// 文件写入成功之后重新跳转到主页面
res.redirect('/');
});
}
// 渲染主页面
exports.showIndex = (req,res) => {
res.render('index',{list : data});
}
// 跳转到添加图书的页面
exports.toAddBook = (req,res) => {
res.render('addBook',{});
}
// 添加图书保存数据
exports.addBook = (req,res) => {
// 获取表单数据
let info = req.body;
let book = {};
for(let key in info){
book[key] = info[key];
}
book.id = maxBookCode() + 1;
data.push(book);
// 把内存中的数据写入文件
writeDataToFile(res);
}
// 跳转编辑图书页面
exports.toEditBook = (req,res) => {
let id = req.query.id;
let book = {};
data.forEach((item)=>{
if(id == item.id){
book = item;
return;
}
});
res.render('editBook',book);
}
// 编辑图书更新数据
exports.editBook = (req,res) => {
let info = req.body;
data.forEach((item)=>{
if(info.id == item.id){
for(let key in info){
item[key] = info[key];
}
return;
}
});
// 把内存中的数据写入文件
writeDataToFile(res);
}
// 删除图书信息
exports.deleteBook = (req,res) => {
let id = req.query.id;
data.forEach((item,index)=>{
if(id == item.id){
// 删除数组的一项数据
data.splice(index,1);
}
return;
});
// 把内存中的数据写入文件
writeDataToFile(res);
}