Express-crud
起步
- 初始化
- 模块化思想
- 模块职责 要单一
路由设计
请求方法 | 请求路径 | get参数 | post参数 | 备注 |
---|---|---|---|---|
GET | /students | 渲染首页 | ||
GET | /students/new | 渲染添加学生页面 | ||
POST | /students/new | name,age, gender,hobbies | 处理添加学生 请求 | |
GET | /students/edit | id | 渲染编辑页面 | |
POST | /students/edit | id,name,age, gender,hobbies | 处理编辑请求 | |
GET | /students/delete | id | 处理删除 请求 |
提取路由模块
router.js
// router.js路由模块
// 职责:
// 处理路由
// 根据不同的请求方法+请求路径设置具体的请求处理函数
// 模块职责要单一,不要乱写
// 我们划分模块的目的就是为了增强项目代码的可维护性
// 提升开发效率
var fs=require('fs')
//Express提供了一种更好的方式
//专门用来包装 路由的
var express=require('express')
//1.创建一个路由容器
var router=express.Router()
//2.把路由都挂载到router路由容器中
router.get('/students', function(req, res) {
fs.readFile('./db.json', 'utf8', function(err, data) {
if (err) {
return res.status(500).send('Server error.')
}
//从文件中读取到的数据一定是字符串
//所以这里一定要手动转成对象
var students = JSON.parse(data).students
res.render('index.html', {
fruits: [
'苹果 ',
'香蕉',
'橘子',
],
students: students
})
})
})
router.get('/students/new', function(req, res) {
res.render('new.html')
})
router.post('/students/new', function(req, res) {
//1.获取表单数据
//2.处理
// 将数据保存到db.json文件中用于持久化
//3.发送响应
//先读取出来 转成对象
//然后往对象中push数据
//然后把对象转为字符串
//然后把字符串再次写入文件
console.log(req.body)
})
router.get('/students/edit', function(req, res) {
})
router.post('/students/edit', function(req, res) {
})
router.get('/students/delete', function(req, res) {
})
//3.把router导出
module.exports=router
app.js
var router = require('./router')
//挂载路由
app.use(router)
##设计操作数据的API文件模块
// sutedent.js
// 数据操作文件模块
// 职责:操作文件中的数据,只处理数据,不关心业务
var fs=require('fs')
// 获取所有学生列表
exports.find=function(){
}
// 添加保存 学生
exports.save=function(){
}
// 更新学生
exports.update=function(){
}
//删除学生
exports.delete=function(){
}
自己编写的步骤
1.处理模板
2.配置开放静态 资源
3.简单路由:/students渲染静态页面出来
4.路由设计
5.提取路由模块
6.接下来一系列的引入业务操作都需要处理文件数据,所以我们需要封装students.js
7.先写好student.js文件结构
查询所有学生列表的APIfind
findById
save
updateById
deleteById
8.实现具体功能
通过 路由收到请求
接收请求中的数据
req.query
req.body
调用数据操作API处理数据
根据操作 结果给客户端发送 响应
9.业务功能数据