设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 技术文摘 查看内容

Node.js设计经验谈

2014-9-25 11:24| 发布者: joejoe0332| 查看: 3894| 评论: 0|原作者: 伍昆|来自: CSDN

摘要: Node.js作为一门新兴的后台语言,旨在帮助程序员快速构建可伸缩的应用程序。Node.js有很多吸引人的地方,有关它的报道不计其数,本文将针对EventEmitter、Streams、Coding Style、Linting、Coding Style等特性进行分 ...


Control Flow(流程控制)

  由于JS中有第一类对象,闭包等功能概念,因而能够容易地对回调权限进行定义。这在进行原型设计时是非常方便的,能够对逻辑权限按需进行整合。但是同时容易造成使用笨拙的内置函数。


  例如我们想按次序读入一系列文件,然后执行某个任务:

  1. fs.readFile('firstFile''utf8'function firstCb(err, firstFile) {  
  2.   doSomething(firstFile);  
  3.   fs.readFile('secondFile''utf8'function secondCb(err, secondFile) {  
  4.     doSomething(secondFile);  
  5.     fs.readFile('thirdFile''utf8'function thirdCb(err, thirdFile) {  
  6.       doSomething(thirdFile);  
  7.     });  
  8.   });  
  9. });  


  这个模式存在的问题是:

  1. 这些代码的逻辑非常散乱无序,相关的操作流程难以理解。
  2. 没有任何差错或异常处理。
  3. JS中闭包内存泄漏是非常常见的,并难以诊断和探测。


  如果我们想在一个输入集上进行一系列异步操作,使用一个流程控制库是更明智的选择。这里使用的是vasync。


  vasync是一个流程控制库,其思路来源于异步操作。它的特别之处是能够让消费者对某个任务处理过程进行查看和观察。这些信息对研究某个错误的产生过程是非常有用的。


Coding Style(编程风格)

  编程风格可谓最具争议性的话题,因为很多时候都是随性的。萝卜白菜,各有所爱。重要的是找到适合个人和团队的风格。一些传统的传承或许能够让Node开发之旅变得更美好。

  • 为函数命名
  • 尽量对所有函数进行命名。
  • 避免闭包
  • 不要在某个函数中定义其它函数。这可减少很多想不到的闭包内存泄露意外。
  • 更多和更小巧的函数

  V8 JIT虽然是一个功能强大的引擎,但是更小巧和精简的函数会与V8结合得更好。进一步说,如果我们的函数都是小巧玲珑的(100行左右),我们自己进行阅读和维护时也会感谢自己的。

  用编程方式检查风格:保持风格一致性,并使用一个检查工具来加强。我们使用的是jsstyle。


Linting(代码检查)

  Lint工具可以在不运行情况下进行代码的静态分析,检查出潜在的错误和风险,例如在caseswitch中遗漏了break语句。Lint不简单地等同于风格检查,它更针对于客观的风险分析,而不是主观的风格选择。我们使用的javascriptlint,它里面有丰富检查项目。


Logging(日志记录)

  当我们进行程序设计和编码时,需要有长远的目光。特别是要考虑好使用什么工具来进行调试。极好的第一步是进行有效日志记录。我们需要对信息进行识别,看看什么是调试时特别留意的,什么是运行时用来分析研究的。这里推荐使用Bunyan,一个直接的Node.js日志记录库,数据输出格式是JSON ,要了解更多信息,请点击这里


Client Server

  如果一款应用具备分布式处理能力,在市场上会更有吸引力。类似的接口可以用HTTP RESTFul API或原始的TCP JSON来描述。这可以让开发者把Node上的经验与异步网络环境相结合,以及把streams的使用与分布式可扩展式系统相结合。


常用工具:

1. restify

简单来说,这是一个用于构建REST服务的工具。它提供了良好的查看和调试处理支援,同时支持Bunyan与DTrace。

2. fast

fast是一款以TCP来处理JSON消息的轻量级工具。提供了DTrace支持,能够让我们迅速地对服务器客户端进行性能特征识别。

3. workflow

workflow构建于restify之上,能够对一系列远程服务和API进行业务流程定义。例如:错误状态,超时,重新连接,拥塞处理等。


英文出自:Joyent


酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部