Node.js项目命名约定的文件和文件夹
什么是一个大的Node.js项目中的文件和文件夹的命名约定?
我应该利用,驼峰还是低分?
IE浏览器。 这被认为是有效的?
project-name app controllers someThings.js users.js models someThing.js user.js views some-things index.jade users logIn.jade signUp.jade ...
几年后,我可以说目录/文件结构没有约定。 然而,大多数(专业)快速应用程序使用如下设置:
/ /bin - scripts, helpers, binaries /lib - your application /config - your configuration /public - your public files /test - your tests
一个使用这个设置的例子是nodejs-starter 。
我个人将此设置更改为:
/ /etc - contains configuration /app - front-end javascript files /config - loads config /models - loads models /bin - helper scripts /lib - back-end express files /config - loads config to app.settings /models - loads mongoose models /routes - sets up app.get('..')... /srv - contains public files /usr - contains templates /test - contains test files
在我看来这更好地匹配unix风格的目录结构(而上面的混合了一点)。
我也喜欢这个模式来分隔文件:
LIB / index.js
var http = require('http'); var express = require('express'); var app = express(); app.server = http.createServer(app); require('./config')(app); require('./models')(app); require('./routes')(app); app.server.listen(app.settings.port); module.exports = app;
LIB /静态/ index.js
var express = require('express'); module.exports = function(app) { app.use(express.static(app.settings.static.path)); };
这样可以很好地解耦所有源代码,而不必打扰依赖关系。 一个真正的好战斗的讨厌的JavaScript的解决scheme。 一个真实世界的例子是在附近使用这个设置。
更新(文件名):
关于文件名最常见的是小写 , 小写的文件名。 如果您的文件只能用两个字来描述,那么大多数JavaScript项目都使用下划线作为分隔符。
更新(variables):
关于variables,相同的“规则”适用于文件名。 原型或类应该使用骆驼案例 。
更新(styleguides):
没有约定。 有一些逻辑结构。
唯一可以说的一点是:永远不要使用camelCase文件和目录名称。 为什么? 它的工作原理,但在Mac和Windows上,一些行动和一些行动之间没有什么不同。 我遇到了这个问题,而不是一次。 我需要一个像这样的文件:
var isHidden = require('./lib/isHidden');
但不幸的是,我创build了一个文件充满小写: lib/ishidden.js
。 它在mac上为我工作。 它在我的同事的Mac上运行良好。 testing运行没有错误。 部署后我们得到了一个巨大的错误:
Error: Cannot find module './lib/isHidden'
哦耶。 这是一个Linux的盒子。 所以camelCase目录结构可能是危险的。 对于在Windows或Mac上开发的同事来说,这已经足够了。
所以,如果你需要使用下划线(_)或短划线( – )分隔符。
所有包,文件夹和文件名使用kebab-case
。
为什么?
你应该想象,有一天任何文件夹或文件可能被提取到自己的包。 包不能包含大写字母。
新包名称中不能包含大写字母。 https://docs.npmjs.com/files/package.json#name
所以,不应该使用camelCase
。 这留下snake_case
和kebab-case
snake_case
kebab-case
。
kebab-case
是迄今为止最常见的习惯。 下划线的唯一用途是内部节点包,这只是从早期的约定。
大多数人在JS中使用camelCase
。 如果你想开源,我build议你使用这个:-)
Node.js不强制执行任何文件命名约定( index.js
除外)。 而一般的Javascript语言也不行。 你可以在这里find几十个线程,提示camelCase,连字符和下划线,其中任何一个都可以很好地工作。 所以它取决于你。 select一个并坚持下去。
据我说:对于文件,如果module.exports是一个对象,使用较低的骆驼大小写,我的意思是一个单身模块。 这也适用于JSON文件,因为它们也是单一的方式。 如果module.exports返回一个构造函数,就像一个类一样使用上面的骆驼事件。
对于文件夹使用短名称。 如果需要多个单词,让它完全小写,用“ – ”隔开,这样它可以在所有平台上一致地工作。
我已经给@ bodokaiser +1了。 以下是我的评论。
编辑。
有一些类像EventEmitter
。 他们遵循java风格的命名类。 在这里,我遵循一点。 所有的全局都是小的情况(甚至不是camelcase),所有的封装类都是java风格 – 大写。 这意味着如果你正在定义一个你自己的类function MyFunction(){...}
,你通常希望创build它大写。