回答
反模式:
同步執行:
我們避免一切同步執行,這也被稱爲阻塞IO。 node.js建立在非阻塞IO之上,任何單個阻塞調用都會引入一個直接的瓶頸。
fs.renameSync
fs.truncateSync
fs.statSync
path.existsSync
- ...
是否所有阻塞的IO調用而這些必須避免。
雖然他們確實存在的原因。他們可能也可能只能在服務器的設置階段使用。在設置階段使用同步調用非常有用,因此您可以控制執行的順序,並且您不需要認真思考處理第一次傳入時的回調是否已經執行請求。
低估V8:
V8是底層的JavaScript解釋器,Node.js的基礎上。 (是的,spidernode正在開發中!)V8速度很快,它的GC非常好,它完全知道它在做什麼。沒有必要微觀優化或低估V8。
內存泄漏:
如果你來自一個基於強大的瀏覽器的JavaScript的背景,那麼你千萬不要因爲一個單頁的壽命,從秒到幾個小時很在乎內存泄漏。單個node.js服務器的生命週期從幾天到幾個月不等。
當你來自非服務器端的JS背景時,內存泄漏並不是你想到的。深入理解內存泄漏非常重要。
一些資源:
目前,我自己也不知道如何先發制人保衛反對票他們。
的JavaScript的JavaScript
所有反模式適用。在我看來,主要的破壞性的東西是像C一樣對待JavaScript(只寫程序代碼)或者像C#/ Java(僞造經典繼承)。
JavaScript應被視爲典型的OOP語言或作爲功能語言。我個人建議您使用新的ES5功能,並使用underscore作爲工具帶。如果您充分利用這兩者,您將自動開始以適合JavaScript的功能風格編寫代碼。
對於如何編寫適當的原型OOP代碼,我個人沒有任何好的建議,因爲我從來沒有掌握它。
模塊化代碼:
node.js中具有很大的require
聲明,這意味着你可以模塊化所有的代碼。
node.js中不需要全局狀態。其實你需要專門去global.foo = ...
提升到全局狀態,這是總是一個反模式。
通常,代碼應該是弱耦合的,EventEmitter允許您的模塊很好地解耦,並且可以編寫易於實現/替換的API。
代碼大全:
凡是在Code Complete 2本書適用,我就不再重複了。
同意。但你能否提供一些先進的話題。 – 2011-05-21 12:14:22
@guillin「先行話題」含糊不清。 – Raynos 2011-05-21 12:24:13
我聽到過一些聲音,說v8 GC有時會讓程序停一會兒,什麼樣的代碼會造成這個問題呢? – 2011-05-21 13:31:09
- 1. 使用反射破解類字段的任何設計模式
- 2. 模式匹配中的NodeJS
- 3. IClientChannel反模式
- 4. NodeJS違反Promise
- 5. 模式是MVVM中的反模式嗎?
- 6. CLI模式/反模式的可用性
- 7. 如何在nodejs中創建mysql模式
- 8. PM2 NodeJs集羣模式
- 9. 任何設計模式?
- 10. XS:任何模式驗證
- 11. 模塊化模式vs Prototype - Nodejs?
- 12. Rails Group_By反模式
- 13. Java Map反模式?
- 14. 存在的反模式,如何避免
- 15. Python中的BaseBean反模式
- 16. JPA entity.save(EntityManager的)反模式
- 17. 的NodeJS - 如何在任何文件
- 18. Decorator模式與調用超反模式
- 19. NodeJS中的模式查找算法
- 20. 遞歸模式下的nodejs http請求
- 21. NodeJS中的Mongoose模式TypeError:模式不是構造函數
- 22. NodeJs:任何方式繞過querystring.stringify與空的對象?
- 23. 使用NodeJS的GlusterFS的任何示例
- 24. 如何在NodeJS REPL中使用「反向交互式搜索」?
- 25. 反向Django通用視圖,post_save_redirect;錯誤'包括的urlconf沒有任何模式'
- 26. 「富域模式」能否違反單一責任原則?
- 27. 此用例的任何設計模式
- 28. CRUDing Business Objects的任何模式/框架?
- 29. NodeJS使用的任何特定端口
- 30. 是否有任何nodejs的websocket插件
我幾乎不能相信有人投票關閉了這個話題。 – 2011-05-21 12:09:12
你應該讓它成爲一個社區wiki,因爲它本身不是一個可回答的問題。 – mikl 2011-05-21 12:19:13
@miki它不能成爲一個CW,因爲只有答案可以。 – Raynos 2011-05-21 12:25:29