router.js:
/** * router.js 路由模块 * 职责: * 处理路由 * 根据不同的请求方法+请求路径设置具体的请求处理函数 * 模块职责要单一,不要乱写 * 我们划分模块的目的就是为了增强项目代码的可维护性 * 提升开发效率 */ var express = require("express") var fs = require("fs") // 1. 创建一个路由容器 var router = express.Router() // 2. 把路由都挂载到 router 路由容器中 router.get("/", function (req, res) { //res.send("get请求根目录"); res.render("index.html"); }) // 查询所有数据 router.get("/list", function (req, res) { var dataObj = { ret: false, total: 0, rows: [], msg: "" }; fs.readFile("./file/obj.txt", function (error, data) { if (!error) { var dataArr = JSON.parse(data); dataObj.total = dataArr.length; dataObj.ret = true; dataObj.rows = dataArr; } else { dataObj.msg = "读取文件失败!"; } res.json(dataObj); }) }) router.get("/test", function (req, res) { // 在 Express 中可以直接 req.query 来获取查询字符串参数 // 获取geg请求参数 res.send(req.query); }) // 添加 router.get("/add", function (req, res) { // 在 Express 中使用模板引擎有更好的方式:res.render('文件名, {模板对象}) // art-template 官方文档:如何让 art-template 结合 Express 来使用 res.render("add.html", { "title": 'art-template' }); }) // 添加 router.post("/add", function (req, res) { var dataObj = { ret: false, msg: "" }; var userObj = { name: req.body.name, age: req.body.age, gender: req.body.gender, city: req.body.city } fs.readFile("./file/obj.txt", function (error, data) { if (!error) { var dataArr = JSON.parse(data); userObj.id = dataArr.length; dataArr.push(userObj); fs.writeFile("./file/obj.txt", JSON.stringify(dataArr), function (error, data) { if (!error) { dataObj.ret = true; dataObj.msg = "添加用户成功!"; res.json(dataObj); } else { dataObj.ret = false; dataObj.msg = "添加用户失败!"; res.json(dataObj); } }) } else { dataObj.ret = false; dataObj.msg = "读取文件失败!"; res.json(dataObj); } }) }) // 删除 router.delete("/delete", function (req, res) { var dataObj = { ret: false, msg: "" }; var idArr = JSON.parse(req.body.userIdArr); fs.readFile("./file/obj.txt", function (error, data) { if (!error) { var userArr = JSON.parse(data); for (var i = 0; i < userArr.length; i++) { for (var n = 0; n < idArr.length; n++) { if (userArr[i].id === idArr[n]) { userArr.splice(i, 1); } } } fs.writeFile("./file/obj.txt", JSON.stringify(userArr), function (error, data) { if (!error) { dataObj.ret = true; dataObj.msg = "删除用户成功!"; res.json(dataObj); } else { dataObj.msg = "写入文件失败!"; res.json(dataObj); } }) } else { dataObj.msg = "读取文件失败!"; res.json(dataObj); } }) }) // 编辑 router.post("/edit", function (req, res) { let dataObj = { ret: false, msg: '' }; let userObj = { id: req.body.id, name: req.body.name, age: req.body.age, gender: req.body.gender, city: req.body.city } fs.readFile("./file/obj.txt", function (error, data) { if (!error) { var userArr = JSON.parse(data); for (var i = 0; i < userArr.length; i++) { if (userArr[i].id == userObj.id) { userArr[i] = userObj; } } fs.writeFile("./file/obj.txt", JSON.stringify(userArr), function (error, data) { if (!error) { dataObj.ret = true; dataObj.msg = "编辑用户成功!"; res.json(dataObj); } else { dataObj.msg = "写入文件失败!"; res.json(dataObj); } }) } else { dataObj.msg = "读取文件失败!"; res.json(dataObj); } }) }) router.get("/404", function (req, res) { res.render("404.html"); }) module.exports = router;
express-router.js:
/** * 功能演示:router功能 */ /** * 一、express使用 */ // 0. 安装 // 1. 引包 var express = require("express") var router = require('./router') // 2. 创建你服务器应用程序 // 也就是原来的 http.createServer var app = express(); /** * 二、使用body-parser获取POST方式提交的数据 */ // 二、使用body-parser获取POST方式提交的数据1: var bodyParser = require("body-parser") // 设置静态资源文件夹 // 只要这样做了,你就可以直接通过 /static/xx 的方式访问 public 目录中的所有资源了 app.use("/static/", express.static("./static/")); app.use('/node_modules/', express.static('./node_modules/')); /** * 三、art-template模板引擎: */ // 三、art-template模板引擎:设置模板文件类型 app.engine("html", require("express-art-template")) // 二、使用body-parser获取POST方式提交的数据2: // 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(5555, function () { console.log("服务启动成功......"); })