图书管理系统实现增删改查
在json文件中实现
(1) 使用json
使用三层架构 去写
第一层: index.js
第二层: router.js 路由封装
第三层: service.js 业务逻辑
创建主入口文件index.js
//引入相应模块
const express = require('express');
const bodyParser = require('body-parser');
const router = require('./routers/router1');
const path = require('path');
const app = express();
app.use(bodyParser.urlencoded({ extended: false }));
app.use(express.static('views'));
// express 兼容 art-template 模板引擎
// 设置模板引擎的路径
app.set('views',path.join(__dirname, 'views'));
// 设置模板引擎
app.set('view engine','art');
// 安装express-art-template
app.engine('art', require('express-art-template'));
// 路由规划设计 get post
// 使用配置路由
app.use(router);
app.listen(3000, () => {
console.log('runnning.......');
})
主入口文件写好后,后续就不需要进行改动
路由分配层
const express = require('express')
// 设置对于路由的处理的方法 Router()内置的路由处理的中间件
const router = express.Router()
const service = require('../service/service')
//显示json中的信息
router.get('/',service.showbook)
//跳转到添加书籍的页面
router.get('/toAddBook',service.toaddbook)
//提交书籍
router.post('/addbook',service.addbook)
//跳转到修改文件的页面
router.get('/toEditBook',service.toeditbook)
//提交修改的数据
router.post('/editbook',service.editbook)
//删除数据
router.get('/deleteBook/:id',service.deletebook)
//module.exports 提供了暴露接口的方法
module.exports = router
路由分配层编写时要注意路由名称要与art文件中对应
业务逻辑层
const data = require('../data.json')
const fs = require('fs')
const path = require('path')
//把主文件渲染到页面
exports.showbook=(req,res)=>{
res.render('index',{list:data})
}
//将添加书籍的文件渲染到页面
exports.toaddbook=(req,res)=>{
res.render('addbook')
}
//提交添加的数据,并写入json文件
exports.addbook=(req,res)=>{
//获取提交的信息
let info = req.body;
let arr = [];
data.forEach((i)=>{
arr.push(i.id)
})
let max = Math.max.apply(null,arr)
info.id=max+1;
console.log(info);
//将info中的数据写入data常量中
data.push(info)
//将data中的数据写入json文件
fs.writeFile(path.join(__dirname,'../data.json'),JSON.stringify(data),(err)=>{
if(err){
res.send('服务错误')
}
//写入成功的话就返回主页面
res.redirect('/')
})
}
//将修改渲染到页面,并将想要修改的数据显示到相应位置
exports.toedi