Ray*_*nos 21
反模式:
同步执行:
我们避免所有同步执行,这也称为阻塞IO.node.js构建在非阻塞IO之上,任何单个阻塞调用都会引发直接的瓶颈.
fs.renameSyncfs.truncateSyncfs.statSyncpath.existsSync是否所有阻塞IO调用都必须避免.
它们确实存在是有原因的.它们可能也可能仅在服务器的设置阶段使用.在设置阶段使用同步调用非常有用,这样您就可以控制执行顺序,并且在处理第一个传入时,您不需要非常认真地考虑哪些回调已执行或尚未执行请求.
低估V8:
V8是node.js构建的底层JavaScript解释器.(是的,spidernode正在开发中!)V8很快,它的GC非常好,它确切地知道它在做什么.无需微观优化或低估V8.
内存泄漏:
如果你来自一个强大的基于浏览器的JavaScript背景,那么你并不关心内存泄漏,因为单个页面的生命周期从几秒到几小时不等.单个node.js服务器的生命周期从几天到几个月不等.
当你来自非服务器端JS背景时,内存泄漏并不是你想到的.了解内存泄漏非常重要.
一些资源:
目前我自己也不知道如何先发制人地捍卫他们.
JavaScript的
JavaScript的所有反模式都适用.在我看来,主要的破坏性是像C(只编写程序代码)或像C#/ Java(伪造经典继承)一样对待JavaScript.
JavaScript应被视为原型OOP语言或功能语言.我个人建议您使用新的ES5功能,并使用下划线作为实用带.如果您充分利用这两者,您将自动开始以适合JavaScript的功能样式编写代码.
我个人对如何编写适当的原型OOP代码没有任何好的建议,因为我从来没有掌握它.
模块化代码:
node.js有很好的require声明,这意味着你可以模块化你的所有代码.
node.js中不需要全局状态.实际上你需要特别global.foo = ...提升到全球状态,这总是一种反模式.
通常代码应该是弱耦合的,EventEmitter允许您的模块很好地解耦并编写易于实现/替换的API.
代码完成:
Code Complete 2中的任何内容都适用,我不再重复.
| 归档时间: |
|
| 查看次数: |
3327 次 |
| 最近记录: |