美文网首页
Node.js中间件使用

Node.js中间件使用

作者: playman | 来源:发表于2018-06-24 21:53 被阅读0次

    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
    
    • 创建一个ejs工程
    $ express -e
    
    • 执行安装
    $ npm install
    
    • 运行
    $ npm start
    

    相关文章

      网友评论

          本文标题:Node.js中间件使用

          本文链接:https://www.haomeiwen.com/subject/jegsyftx.html