express中間件筆記整理

express
express概念:express是基於nodejs的HTTPS模塊構建出來的一個web應用開發框架,在nodejs之上擴展了 Web 應用所需的基本功能。
本質上express應用就是調用各類中間件。node

中間件:一個處理某個功能或模塊的函數,一箇中間件對應一個要處理的小任務。
功能:
一、修改請求和響應對象
二、終結請求-響應循環
三、調用堆棧中的下一個中間件。web

示例:
var express=require("express") //引入express框架
var app = express() //建立app應用express

//app.use() 調用中間件
//若是中間件沒有掛載點,不管什麼請求都會執行該代碼
app.use(function(req,res,next){
  console.log(req.cookie);
  next();
})cookie

// '/admin/:id'是掛載點,當要請求這個路徑,就會執行下面的代碼 一箇中間件棧必需要調用終止請求-響應循環方法
app.use('/admin/:id',function(req,res,next){
  console.log(req.user.id);
  next();
},function(req,res,next){
  res.end(req.params.id); // 執行結束方法終止請求-響應循環,(end(),send()..均可以終止)
})app

// 同一個掛載點,這個永遠不會被調用
app.use('/admin/:id',function(req,res,next){
  res.send('User Info');
})框架


中間件五大類:
一、應用級中間件
二、路由級中間件
三、錯誤處理中間件
四、內置中間件
五、第三方中間件函數

應用級中間件:綁定到app對象上的中間件(app.use()或app.method()),以上示例都是應用級中間件
路由級中間件:綁定到express.Router()對象上的中間件
以上示例改一下就變成路由級ui

var express=require("express")
var app = express()
var router = express.Router()
router.use(function (req, res, next) {
  console.log('Time:', Date.now());
  next();
});
// 將路由掛載至應用
app.use('/', router);spa

路由級中間件和應用級中間件的區別是:
當var app=express()的時候就已經建立了一個application,在application內部就建立了一個Router,大部分對application的操做實際上被重定向到Router了。
例子:
app.use() 至關於 app._router.use()
因此application是Router的封裝,Router纔是核心router

錯誤處理中間件:有4個參數(err,req,res,next)
app.use(function(err, req, res, next) {
  console.error(err.stack);
  res.status(500).send('Something broke!');
});

內置中間件:express.static 是 Express 惟一內置的中間件。
將靜態資源文件所在的目錄做爲參數傳遞給 express.static 中間件就能夠提供靜態資源文件的訪問
app.use('/public',express.static('public'));

第三方中間件:
安裝並加載一個解析 cookie 的中間件: cookie-parser
var express = require('express');
var app = express();
var cookieParser = require('cookie-parser');

// 加載用於解析 cookie 的中間件
app.use(cookieParser());


總結:中間件是一個處理函數

歡迎指正!

相關文章
相關標籤/搜索