代码拉取完成,页面将自动刷新
初始化
模板处理
需掌握技术:
应熟练运用
fs文件操作模块
模板引擎
回调函数(callback)---要多写代码巩固经验---思维训练
请求方法 | 请求路径 | get参数 | post参数 | b备注 |
---|---|---|---|---|
GET | /students | 渲染首页 | ||
GET | /students/new | 添加学生信息 | ||
POST | /students/new | name,gender,hobbies,fruits | 处理添加学生请求 | |
GET | /students/edit | id | 渲染编辑页面 | |
POST | /student/edit | id,gender,hobbies,fruits | 编辑请求 | |
GET | /student/delete | id | 删除请求 |
app.js
/*
* app.js入口模块
* --启动服务
* --做一些服务相关的配置
* --模板引擎
* --body-parser -解析表单post请求体
* --提供静态资源服务
* --挂在路由--app.use(router)
* --监听端口号启动服务
* */
let express= require('express')
let router=require('./router')
//第三方插件----解析路径
let bodyParser = require('body-parser')
let app=express()
//公开资源
app.use(express.static('public'))
app.use(express.static('node_modules'))
app.engine('html',require('express-art-template'))
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }))
// parse application/json
app.use(bodyParser.json())
//把路由容器挂载到app服务中
app.use(router)
app.listen(3000,function () {
console.log('app is running!')
})
router.js
/*
- 路由模块
- */
let express=require('express')
let router=express.Router()
let fs=require('fs')
router.get('/',function (req,res) {
})
router.get('/students',function (req,res) {
})
router.get('/students/new',function (req,res) {
})
router.post('/students/new',function (req,res) {
})
router.get('/edit',function (req,res) {
})
router.post('/edit',function (req,res) {
})
router.get('/delete',function (req,res) {
})
//导出router
module.exports=router
students.js----node.js精华之所在
/*
* 操作文件数据
* 只处理数据,不关心业务
* */
let fs = require('fs')
let dbPath = './db.json'
//查询文件里面的数据
exports.find = function (callback) {
fs.readFile(dbPath, 'utf-8', function (err, data) {
if (err) {
return callback(err)
}
callback(null, JSON.parse(data).students)
})
}
//通过id查询数据
exports.findById = function (id, callback) {
fs.readFile(dbPath, 'utf-8', function (err, data) {
if (err) {
return callback(err)
}
let students = JSON.parse(data).students
let ret = students.find(function (item) {
return item.id === parseInt(id)
})
callback(null, ret)
})
}
//保存数据至文件
exports.save = function (student, callback) {
//读取文件数据
fs.readFile(dbPath, 'utf-8', function (err, data) {
if (err) {
return callback(err)
}
let students = JSON.parse(data).students
student.id = students[students.length - 1].id + 1
students.push(student)
//把对象数据转成字符串
let fileDate = JSON.stringify({
students: students
})
//将数据保存至文件
fs.writeFile(dbPath, fileDate, function (err) {
if (err) {
return callback(err)
}
callback(null)
})
})
}
// 更新学生信息(通过id)
exports.undataById = function (student, callback) {
//读取文件数据
fs.readFile(dbPath, 'utf-8', function (err, data) {
if (err) {
return callback(err)
}
let students = JSON.parse(data).students
student.id = parseInt(student.id)
//修改数据(根据id查找)
// ecmaScript6数组方法----find
let stu = students.find(function (item) {
return item.id === student.id
})
for (let key in student) {
stu[key] = student[key]
}
//把对象数据转成字符串
let fileDate = JSON.stringify({
students: students
})
//将数据保存至文件
fs.writeFile(dbPath, fileDate, function (err) {
if (err) {
return callback(err)
}
callback(null)
})
})
}
//删除学生信息
exports.deleteById = function (id, callback) {
fs.readFile(dbPath, 'utf-8', function (err, data) {
if (err) {
return callback(err)
}
let students = JSON.parse(data).students
let deleteid = students.findIndex(function (item) {
return item.id === parseInt(id)
})
students.splice(deleteid, 1)
//把对象数据转成字符串
let fileDate = JSON.stringify({
students: students
})
//将数据保存至文件
fs.writeFile(dbPath, fileDate, function (err) {
if (err) {
return callback(err)
}
callback(null)
})
})
}
界面概览:
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。