编码风格指南node.js应用程序?

是否有一个(或几个)node.js的编码风格指南? 如果不是的话,顶级的开源节点项目使用的新兴的风格是什么?

我正在寻找一个指导(或几个指南)沿线PEP 8 ,Python的规范编码风格指南。 我已经看到各种JavaScript指南不值得在这里链接(大多数是旧的,针对客户端的JavaScript)。 我发现了一个有趣的node.js 风格指南 。

编码风格指南或编码规范应包括(但不限于):

  • 代码布局:缩进(2个空格,4个空格,制表符,…),换行符,换行符等
  • 空格,例如“function(arg)”与“function(arg)”
  • 分号或不分号,var声明,…
  • 命名,例如,do_this()与doThis(),var_name与varName,…
  • node.js和JavaScript的成语,例如,==对===,callback的第一个arg是一个错误对象,…
  • 评论和文件
  • 附带的工具,如皮棉检查器,unit testing框架,…

这个主题显然是非常主观的,但我认为在成熟过程中build立一个共同的,被广泛接受的编码风格是社区的重要一步。 而且,这不仅仅是品味。 特别是像“使用===而不是==”这样的规则对代码质量有直接的影响。

我会回顾一下JSLint检查的编码标准,或者看一下NPM (Isaac Shlueter's) 编码标准的作者 。

您还可以看看着名的Node.JS编码器使用的样式:

  • TJ Holowaychuk
  • Isaac Shlueter
  • 蒂姆·卡斯韦尔
  • 杰里米阿什肯纳斯
  • FelixGeisendörfer
  • 查理罗宾斯
  • Marak Squires
  • 亚伦·赫克曼(Aaron Heckmann)
  • 吉列尔莫·劳奇
  • 迈克尔·罗杰斯
  • Ryan Dahl +你可以看看实际的Node.JS代码库

我会把它扔在那里,好的措施;)

编辑: @alienhard的build议

  • Google JavaScript风格指南
  • Felix的Node.js风格指南

国际海事组织有几个黄金法则你应该遵循:

  • 切勿使用或eval
  • 使用===覆盖==
  • 总是在适当的范围内用var声明你的variables – 不要回退到全局范围
  • 如果您计划发布运行服务器端以及浏览器的代码,则将您的应用封装在闭包中(function(){})()
  • callback应该作为第一个参数err ,如果他们自己把一个callback作为参数,它应该是最后一个,例如callback(err, param1, param2, callback)

缩进,括号和关键字之间的间隔以及分号放置都是优先select的问题。

您可以从面向客户端的JavaScript指南中学习很多良好的编码风格实践(其中大部分也适用于node.js,因为客户端和服务器端之间的区别主要在于库而不是语言本身)。 例如,“ JavaScript模式”一书专门讨论了这一主题的一些部分。 此外道格拉斯Crockford的网站 , 书籍和video是一个必须看到的材料,以采用JavaScript的具体编码风格和最佳做法,我会说。

镇上有一个新的标准。

使用标准样式 。

JS-标准式

从terminal使用节点时,源代码使用空格进行缩进非常有用。 否则,这里的“错误”插入符号将不会排队。

使用标签:

  var preps = files.map(function(f) { ^ TypeError: Cannot call method 'map' of null 

有空格:

  var preps = files.map(function(f) { ^ TypeError: Cannot call method 'map' of null 

这可能只是一个Mac的问题,但我不怀疑。

自从我问这个问题已经有一段时间了,同时我发现了这个优秀的JavaScript指南:

编写一致的JavaScript语言的原则

https://github.com/rwldrn/idiomatic.js/

Airbnb有一个相当不错的JavaScript风格指南https://github.com/airbnb/javascript

对于Coffee-Script,缩进意味着编译错误

使用

 :set tabstop=2 :set shiftwidth=2 :set expandtab 

stream行的咖啡项目, zombiebrunch使用这种设置缩进。

编辑:

其实只要用这个! https://github.com/paulmillr/code-style-guidesbrunch的主要贡献者之一)