2013-05-11 58 views
1

就像其他人一樣,看起來,我已經開始使用node.js和Express框架。我應該在node.js和Express中鏈接方法和函數嗎?

雖然我對客戶端Javascript有很大的信心,當然很依賴JQuery,但是我對node.js的研究卻暴露了我對JavaScript的實際工作方式缺乏正確理解。因此,這個問題。

每個教程中,我所看到的,包括那些由Holowaychuk先生本人,做這樣的事情:

var express = require('express'), 
    app = express(); 

app.use(express.methodOverride()); 
app.use(express.cookieParser()); 
app.use('/images', express.static(__dirname + '/public/images')); 
app.get('/', <do something>); 
app.get('/:something', <do something else>) 
app.listen(3000); 

如果我寫這樣的事情對客戶端Javascript我會被誘惑參考app對象只是一次,並鏈接任何功能或方法,從而產生此:

var express = require('express'), 
    app = express(); 

app.use(express.methodOverride()) 
    .use(express.cookieParser()) 
    .use('/images', express.static(__dirname + '/public/images')) 
    .get('/', <do something>) 
    .get('/:something', <do something else>) 
    .listen(3000); 

所以我的問題是:這兩個功能不同?我是否冒着不同尋常之神的不安?

任何關於教程的幫助和鏈接都稱爲'僅僅因爲你已經玩過JQuery並不意味着你理解Javascript的任何東西'都會被感激地收到。

+0

只要'use','get'和'listen'返回原來的'app',那就沒問題。鏈接工作與jQuery的原因是因爲jQuery方法總是(在大多數情況下)返回原始選定元素集合 – Ian 2013-05-11 18:38:35

+0

謝謝@Ian。這是有道理的,鏈接版本似乎和unlink一樣工作。我仍然懷疑這樣一個事實,即我看過的許多node.js/Express教程和示例都沒有使用鏈接。 – 2013-05-11 18:53:43

回答

1

Fluent只是構建API的一種方法。從本質上說,你要做的就是回報這是調用該方法的變量:

app.use = function(){ 
    // do stuff here 
    return this; 
}; 

然後你就可以做到以下幾點:

app.use().use().use(); 

當函數通常不會返回任何東西,這顯然只能。

所以這取決於你在做什麼。如果你真的想用流利模式來構建你的API,那麼請繼續,但要確保你對它一致。

如果你不想,也沒關係,你不會破壞任何東西,或者讓你的代碼更少維護,這只是一種風格。 (在jQuery中效果特別好,因爲jQuery對象上的任何方法都不需要返回數據)

相關問題