Node.js中间件使用

2018-06-24  本文已影响0人  playman

Express进阶

了解请求

使用body-parse处理请求

了解express.js中间件的概念

根据请求设置不同的响应

使用路由分配模块

Request请求

Get请求——向服务器申请内容,请求体随URL发送,长度受限制,不加密

app.get('/search', function (req, res) {
    res.send('你搜索了');
});

Post请求——向服务器提交内容,请求体单独发送,长度不限,安全

app.post('/search', function (req, res) {
    res.send('你搜索了');
});
在页面from表单中method设为GET/POST,action填对应的内容

安装中间件

安装

$ npm install body-parser --save

添加依赖

var bodyParser = require('body-parser');
//解析JSON
app.use(bodyParser.json());
//处理页面传来的值
app.use(bodyParser.urlencoded({extended:true}));

与页面结合

add.ejs

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>用户</title>
    </head>
    <body>
        <h1>姓名<%=name%></h1>
        <h1>年龄<%=age%></h1>
        <h1>爱好<%=fav%></h1>
    </body>
</html>

app.js

app.post('/adduser', function (req, res) {
    console.log(req.body);
    var user = {};
    user.name = req.body.name;
    user.age = req.body.age;
    user.fav = req.body.fav;
    res.render('add',user);
});

表单页面自己添加

<form class="" action="/adduser" method="post">
    <label for="name">姓名</label>
    <input id="name" type="text" name="name" value="">
    <label for="age">年龄</label>
    <input id="age" type="text" name="age" value="">
    <label for="fav">爱好</label>
    <input id="fav" type="text" name="fav" value="">

    <input type="submit" name="button" value="添加"></button>
</form>
写入文件

添加依赖

var fs = require('fs');//文件的读写

写入文件

var str = JSON.stringify(user);
fs.writeFile('./save/user.json',str,'UTF-8');
注意:要创建文件夹

持续写入内容

var str = JSON.stringify(user);
fs.appendFile('./save/user.json', str, 'UTF-8', function () {
  console.log('追加内容完成');
});

创建数组,数组内为JSON格式

app.post('/adduser', function (req, res) {
    console.log(req.body);
    fs.readFile('./save/user.json', function (err,data) {
        var userlist;
        if(data.toString() === ''){
            userlist = [];
        }else{
            userlist = JSON.parse(data);
        }
        var user = {};
        user.name = req.body.name;
        user.age = req.body.age;
        user.fav = req.body.fav;
        //将新用户推进数组保存
        userlist.push(user);
        //持续写入对象
        var str = JSON.stringify(userlist);
        fs.writeFile('./save/user.json',str,'UTF-8');
        res.render('add',user);
    });
});

自定义中间件

//自定义的中间件
function addnews(req,res,next) {
    fs.readFile('./save/news.json', function (err,data) {
        var newslist;
        if(data.toString() === ''){
            newslist = [];
        }else{
            newslist = JSON.parse(data);
        }
        var news = {};
        news.title = req.body.title;
        news.pic = req.body.pic;
        news.newssrc = req.body.newssrc;
        news.newstime = req.body.newstime;

        newslist.push(news);

        var str = JSON.stringify(newslist);
        fs.writeFile('./save/news.json',str,'UTF-8');
        // res.send('添加成功');
    });
    next();
}

//添加新闻
app.post('/addnews', addnews, function (req,res) {
    console.log(req.body);
    res.send('添加成功!!!');
});

自定义不同路由处理

自定义路由处理

//这个路由文件用于处理所有来自后台端的请求
var express = require('express');
var router = express.Router();

// 做其它路由处理
router.get('', function (req, res, next) {
});

router.post('', function (req,res, next) {
});

module.exports router;

app.js添加

app.use('/admin', admin);
//表示所有/admin请求都走admin.js路由请求

express自动构建工程

$ npm install express-generator -g
$ express -e
$ npm install
$ npm start
上一篇 下一篇

猜你喜欢

热点阅读