express中間件筆記整理

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

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

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

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

// '/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.use('/admin/:id',function(req,res,next){
  res.send('User Info');
})


中間件五大類:
1、應用級中間件
2、路由級中間件
3、錯誤處理中間件
4、內置中間件
5、第三方中間件

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

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);

路由級中間件和應用級中間件的區別是:
當var app=express()的時候就已經創建了一個application,在application內部就創建了一個Router,大部分對application的操作實際上被重定向到Router了。
例子:
app.use() 相當於 app._router.use()
所以application是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());


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

歡迎指正!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章