expressミドルウェアの理解

3503 ワード

nodejsミドルウェア
クッション:
一つの要求をサーバーに送ります.ライフサイクルを経て、サーバーは要求を聞いてください.解析要求に応答して、サーバーはこのプロセスを処理する時、時には複雑になります.これらの複雑な業務を一つのサブ部分に分解して、サブ部分は一つの中間部品です.処理要求に対して、応答が出る前に、要求と要求に対してもいいです.ステージ応答はいくつかの動作を行い、この処理結果を次の処理ステップに渡すことができる.
expressは中間部品をこのように説明します.
コードを実行します.要求と応答オブジェクトを変更します.終了要求-応答サイクル.スタックの次の中間部品を呼び出します.
カテゴリ:
アプリケーションレベルの中間部品のルーティングレベルの中間部品のエラー処理中、中間部品に中間部品の第三の中間部品を内蔵します.
くりを一つあげる:
 var express = require('express');
 var app = express();
 app.get('/', function(req, res, next) {
    // req     
    // res     
    next(); //              /    ,   next(), 
           //                      ,          
 });
app.get('/end', function(req, res) {
    res.send('          ,  next  ');
})
app.listen(3000);
上のnext()の説明:next()関数はnodejsまたはexpressの関数ではなく、中間部品関数を伝達する第三変数です.これは総称して、任意の名前でもいいです.名前統一のために、混乱を起こさないようにnext()と約束しています.それを呼び出したら、アプリケーションの次の中間プログラムを呼び出します.
中間部品の使用説明:
 var express = require('express');
 var app = express();
 app.use(requestTime); // 
 var requestTime = function(req,res, next) {
    req.requestTime = new Date().getTime();
    next();
 }

 app.get('/time', function(req, res, next) {
    var timeText = '     :';
    timeText = timeText + req.requestTime; //    req.requestTime               ,
    //         ,           req      ,    next()            ,
    //                            
    res.send(timeText);
 });
app.get('/end', function(req, res) {
    res.send('          ,  next  ');
})
app.listen(3000);
以下は、要求と応答をそれぞれの関数で処理する複数の中間体関数の例である.
具体的に
var express = require('express');
var app = express();

var middleA = function (req, res, next) {
    req.useOne = '        middleA ';
    res.useOne = 'middleA        middleA';
    req.paramasQuery = 1
    // console.log(req.useOne, req.useTwo, req.useThree);
    next();
}

var middleB = function (req, res, next) {
    req.useTwo = '         middleB';
    res.useTwo = 'middleB        middleB';
    req.paramasQuery += 1;
    console.log(res.useOne, res.useTwo, res.useThree);
    next();
}

var middleC = function (req, res, next) {
    req.useThree = '         middleC';
    res.useThree = 'middleC        middleC';
    req.paramasQuery += 2;
    console.log(res.useOne, res.useTwo, res.useThree);
    console.log(req.paramasQuery);
    next();
}
app.use(middleA);
app.use(middleB);
app.use(middleC);

app.get('/', function(req, res, next) {
    console.log(req.useOne, req.useTwo, req.useThree);
    //         middleA           middleB          middleC
    //    req                       
    console.log(res.useOne, res.useTwo, res.useThree);
    // middleA        middleA middleB        middleB middleC        middleC
    //    res                   res          
    req.paramasQuery += 3;
    // req paramasQuery                 ,     7,
    //     res          ,          
    //         ,             ,                ,
    //               ,             ,
    //           ,    ,    
    res.send('req.paramasQuery                :' + req.paramasQuery); // 7
})

app.listen(5000, function() {
    console.log('5000      ')
})
まとめ:
express      ,            ,                             。            ,            。
        ,        ,        ,。。。,        ,         。
    ,     ,     。
転載先:https://www.cnblogs.com/adouwt/p/11102839.html