2012-11-08 121 views
1

我希望找出編寫Node.js模塊的最佳實踐,特別是用於代碼分離的JavaScript模式類型。Node.js模塊插件

一種風格我一直在使用,是這樣的:

var Something; 

Something = (function() { 

    function Something() { 
    } 

    Something.prototype.some = function() { 

    } 

    return Something; 

})(); 

module.exports = Something; 

另一種風格是:

module.exports = { 
item: "one", 
some: function() { 

}, 
another: function() { 

} 
} 

是否有任何理由爲什麼第二種方法就不會被告知,在節點。 JS?或者是否有另一種格式是優先選擇的,這些優勢會是什麼?

謝謝!

+3

沒有理由將你的'Something'構造函數封裝在匿名函數中。以這種方式使用匿名函數的目的是爲了防止命名空間污染,但Node中的模塊已經限制在它們自己的命名空間中。 – lanzz

+0

謝謝你,好的提示,將刪除。 – dzm

回答

1

您遇到了使用'this'關鍵字的問題。你必須使用哪個,而不是'Something'。所以Something.some()你可以運行...但是如果你想在底部運行它,你必須運行this.run()。其他功能中的這種變化的範圍可能會變得混亂。

1

有幾種變體,包括將屬性直接分配給exports,將新對象文字分配給module.exports等幾個。大多數情況下,它們只是語法糖或語法替代品,它們完全相同。我的個人偏好是儘可能多地將我的代碼留給未受污染的純JS,並將CommonJS成語分開。所以,我做的:

function myFunction() { 

} 

var MY_STRING = "Forty-two"; 


module.exports = { 
    myFunction: myFunction, 
    MY_STRING: MY_STRING 
}; 

這是一個有點樣板-γ和容易維護的錯誤,但我喜歡它的替代品,因爲我真的不喜歡把我的整個代碼灑在CommonJS的模塊級名稱(模塊,出口)。 CoffeeScript使最後一部分更容易,因爲你可以這樣做:

module.exports = { 
    myFunction 
    MY_STRING 
}