Node.js中模板引擎的使用、POST方式提交數據的獲取以及router功能


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM