node.js应用程序的编码样式指南?

ali*_*ard 130 javascript coding-style 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惯用语,例如== vs.=,回调的第一个arg是一个错误对象,...
  • 评论和文件
  • 随附工具,如lint checker,单元测试框架,......

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

chr*_*iso 117

我将回顾JSLint检查的编码标准,或者查看NPM(Isaac Shlueter)编码标准的作者.

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

我会把我扔到那里以获得好的措施;)

编辑:来自@alienhard的建议

IMO你应该遵循一些黄金法则:

  • 永远不要使用witheval
  • 使用===结束==
  • 始终var在适当的范围内声明变量- 不要回退到全局范围
  • (function(){})()如果您计划发布运行服务器端和浏览器的代码,请将应用程序包装在一个闭包中
  • 回调应该err作为第一个参数,如果他们自己将回调作为参数,它应该是最后的,例如callback(err, param1, param2, callback)

缩进,大括号和关键字之间的间距以及分号放置都是首选问题.

  • 谢谢你的回答.我想知道为什么你没有提到瑞恩;).但我从官方节点repo wiki中得知,他们遵循[Google的JavaScript样式指南](http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml).我之前没有知道那个...... (2认同)

mig*_*iam 14

镇上有一个新标准.

使用标准样式.

JS-标准式

  • @Luc可能是因为"没有分号"规则.对于称为"标准"风格的东西来说,这似乎是一个奇怪的选择. (4认同)

yoj*_*o87 10

您可以从面向客户端的JavaScript指南中学习很多优秀的编码风格实践(大多数也适用于node.js,因为客户端和服务器端之间的区别主要在于库而不是语言本身).例如,JavaScript Patterns book专门针对本主题第2章的某些部分.道格拉斯·克罗克福德的网站,书籍视频也是必看材料,以便采用我特定的JavaScript编码风格和最佳实践.

  • +1道格拉斯克罗克福德的书"JavaScript:好的部分".在一本简洁/小型的书中,它有很多信息 - 一本沉重的阅读,但是我读过的最好的书之一. (3认同)

Dan*_*sky 7

从终端使用节点时,源代码使用空格进行缩进很有用.否则,"错误在这里"插入符号将不会排列.

带标签:

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

有空格:

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

这可能是Mac唯一的问题,但我怀疑不会.


ali*_*ard 6

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

编写一致,惯用JavaScript的原则

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


Dro*_*ror 5

Airbnb有一个非常好的Javascript风格指南 https://github.com/airbnb/javascript