2012-12-23 63 views
6

我一直在閱讀文件/網址,真的不瞭解app.use及其用法。 我知道它是連接的一部分,但我真的沒有那樣做。快遞app.use

例子:

// ignore GET /favicon.ico 
app.use(express.favicon()); 
// add req.session cookie support 
app.use(express.cookieSession()); 
// do something with the session 
app.use(count); 

可以請您給我解釋一下這些3。他們是什麼意思? (1) app.use注意到,但=> app.get? app.use(計數)什麼時候在該計數被執行(或)呼籲/

看起來基本的,但並沒有得到

// ignore GET /favicon.ico 
app.use(express.favicon()); 

// pass a secret to cookieParser() for signed cookies 
app.use(express.cookieParser('manny is cool')); 

// add req.session cookie support 
app.use(express.cookieSession()); 

// do something with the session 
app.use(count); 

// custom middleware 
function count(req, res) { 

回答

8

當你調用app.use(),你在一個函數傳遞給答案處理請求。當請求進入時,Express會按順序遍歷所有的功能,直到處理請求。

express.favicon是一個簡單的函數,當它被請求時返回favicon.ico。這實際上是如何開始使用這種模式的一個很好的例子。您可以通過查看源代碼來查看源代碼:node_modules/express/node_modules/connect/lib/middleware/favicon.js

express.cookieSession是一些用於支持會話數據的中間件,通過Cookie從客戶端輸入密鑰。

我不知道count確實...是你自己的代碼嗎?無論如何,讓我知道如果這不明確。

+1

謝謝你的解釋。所以「app.use(),你傳入一個函數來處理請求」,所以在我的例子中,我沒有要求只有被調用的函數。所以它會默認「GET」? ..yes計數是用戶定義的函數作爲函數計數(req,res)。你能解釋一下app.use(express.cookieSession())的用法嗎?叫做?我的問題在這裏是沒有req。所以在什麼樣的基地將被稱爲 –

+0

你是什麼意思?你沒有使用Express來處理HTTP請求?無論請求是什麼,裝載了「app.use」的中間件都會被調用。這並不意味着它會一直處理請求......中間件決定是處理請求還是讓下一個函數處理它。 – Brad

+0

我已經用示例程序更新了該問題。我的問題是什麼時候一個請求來了「app.use」應該被調用。我發現在我的情況下,它總是調用app.use(count)。我問爲什麼不:app.use(express.cookieSession()); –