业务逻辑分析
加载首页面
后台:分配首页面路由(books),在server中使用数据库查询语句并将所有数据返回成json数据(res.json())
前台:调用ajax方法,type\url与后台对应,向后台发送数据,后台接收到数据后,返回 将所有数据渲染在tbody中
添加图书
后台:获取要添加的数据,连接数据库执行数据库添加语句,将数据添加到数据库中
前台:添加点击事件,点击添加图书是 弹出表单,给提交按钮添加点击事件,调用ajax接口 获取表单所有的数据,判断,成功则渲染到页面
删除图书
后台:获取要删除图书的id 在连接数据库执行删除语句,根据状态码进行判断
前端:给说有的a添加点击事件(遍历每一行数据 获取到a标签所在的列,在根据索引获取到删除并添加点击事件,并获取所删除图书的id),使用ajax将所需要删除图书的id传递到后台,然后判断状态码
修改图书
后台:1.分配跳转(进入)到修改页面的路由地址,实现跳转,用数据库查询语句,根据id获取到需要修改的图书,写入到表单中;
2.分配离开路由地址,根据数据库修改语句,修改图书进行判断
前台:根据索引获取到修改a标签,添加点击事件获取表单,调用接口,将数据填充到表单中,在调用接口 将修改的图书数据返回到后台
查询图书
后端:获取图书书名,定义一个空数组,在使用sql 查询语句,遍历所有数据 获取到匹配的数据放入空数组中
前端:给查询按钮添加点击事件,获取到所要查找的图书名,调用ajax接口,将数据渲染在页面中
一、项目搭建
1.模块引入
//引入
const template=require('art-template');
const express=require('express');
const app = express()
const bobyParser=require('body-parser');
const path =require('path');
const router =require('./router/router')
2.创建文件
- 创建入口文件 index.js
- 创建封装操作数据库的api db.js
- 创建静态文件 public
- 路由分配 route
- 业务逻辑处理 server
二、写入入口文件index.js
//引入
const template=require('art-template');
const express=require('express');
const app = express()
const bobyParser=require('body-parser');
const path =require('path');
const router =require('./router/router')
//静态文件托管
app.use(express.static('public'))
//设置模板兼容
app.engine('art',require('express-art-template'))
//设置模板引擎路径
app.set('views',path.join(__dirname,'views'))
//设置模板引擎
app.set('view engine','art');
//挂载参数处理的中间件
app.use(bobyParser.urlencoded({
extended:false}));
//处理json数据
app.use(bobyParser.json());
//配置路由
app.use(router)
//监听端口
app.listen(3000,()=>{
console.log('...........')
})
三、封装数据库db.js
const mysql=require('mysql')
//接口
exports.base=(sql,data,callback)=>{
//创建连接
const connection=mysql.createConnection({
host:'localhost',
user:'root',
password:'123456',
database:'books'
})
//执行连接操作
connection.connect()
//操作数据库
connection.query(sql,data,(error,results,fileds)=>{
if(error) throw error;
callback(results)
})
}
三、路由分配 router.js
//分配路由
const express=require('express')
const router=express.Router()
const service = require('../server/server')
//查询所有书籍
router.get('/books',service.showInfo);
//添加图书 跳转路由
router.get('/tAddBook',service.tz)
//添加图书
router.post('/books/tj',service.tj)
//修改图书
router.get('/books/book/:id',service.xgtz)
//修改
router.put('/books/xg',service.xg)
//删除
router.get('/books/sc/:id',service.sc)
//查询
router.post('/books/cx',service