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("服務啟動成功......"); })