2012-03-07 82 views
3

大家好,我是Express + NodeJS的新手。我來自Java,並試圖趕上節點,所以請溫柔,如果我問一些基本問題(我花了過去2天趕上這東西)Express + NodeJS文檔

我的問題是圍繞文檔。

所以,當我翻閱了一些目前在快遞網站,我看到的例子以下

app.get('/users/:id?', function(req, res, next){ 
...... 
}); 

有時

app.get('/users/:id?', function(req, res){ 
...... 
}); 

哪裏是爲我確定有多少PARAMATERS進入文檔功能??首先是req,res和next,然後它有req和res。

第二個問題:請求和響應對象上可用的文檔以及作爲框架一部分提供的其他方法的文檔在哪裏?

我擡頭看這裏的文檔http://expressjs.com/guide.html#req.header(),但我無法想象這是整個文檔,因爲我注意到在本文檔中沒有的示例使用的方法。

有人能指點我最常用的文檔爲express + nodeJS開發嗎?如果您可以在此列出所有鏈接,我將非常感激!

回答

3

第一個問題:你需要放慢一分鐘。除了Java之外,您還有使用其他語言的經驗嗎? Javascript沒有方法簽名,就像你從Java中知道的一樣。下面是一個簡單的例子:

function foo(bar, baz, qux) { 
    var result = bar + baz; 
    if(qux) { 
     result += qux; 
    } 
    return result; 
} 

foo(1, 2); 
// => 3 
foo(1, 2, 3); 
// => 6 

這是一個人爲的例子,但它表明,你可以聲明一個函數,它接受3個參數,並且只能使用其中的兩個。實際上,它可以直接使用arguments,甚至可以接受以上的參數,而不是在函數聲明中指定!

function bar(foo) { 
    if(arguments.length > 1) { 
     var baz = arguments[1]; 
     return foo + baz; 
    } 
    return foo; 
} 

bar(2); 
// => 2 
bar(2, 4); 
// => 6 

反正,總之,你的路由處理function(req, res, next) {}將始終與reqresnext稱爲 - 但它只是可能是你並不需要的情況下next(因爲你永遠不會通過控制,也許),所以你省略它(它仍然是那裏,在你的arguments對象,只是沒有作爲next範圍)。有些人認爲這很sl,,有些則認爲它很簡潔。

第二個問題:這裏是node.js docs,http.ServerRequest,http.ServerResponse。您已經知道快遞指南。

+0

謝謝Linus,我在閱讀JavaScript之前完全潛入節點。感謝你的幫助。 – Hans 2012-03-08 21:20:31

3

JavaScript對函數所需的參數數量很寬鬆。如果一個函數需要兩個參數,你仍然可以傳遞五個參數 - 你傳遞的前兩個參數將使用命名參數,其他參數只能通過arguments對象使用。 (同樣,如果您編寫的函數需要三個參數,則調用者仍然只能傳遞兩個參數,而第三個參數的值將爲undefined。)

所以基本上,這個函數總是會得到三個參數,但很多時候你不打算使用next延續,所以你可以把它關掉,JavaScript會默默地吞下它。

至於文檔,該指南是Express的官方文檔。 Node.js的文檔是at nodejs.org。 Express的模塊通常基於它們的vanilla Node等價物(例如,服務器基於Node的http.Server)。