Js 项目对文件和文件夹的命名约定

在大型 Node.js 项目中,文件和文件夹的命名约定是什么?

我应该大写 CamelCase 还是低分?

这被认为是有效的吗?

project-name
app
controllers
someThings.js
users.js
models
someThing.js
user.js
views
some-things
index.jade
users
logIn.jade
signUp.jade
...
173898 次浏览

Js 不强制执行任何文件命名约定(除了 index.js)。Javascript 语言通常也是如此。你可以在这里找到许多线程,它们建议使用 camelCase、连字符和下划线,其中任何一个都可以很好地工作。所以这取决于你。选一个,坚持下去。

大多数人在 JS 中使用 camelCase。如果你想开源,我建议你使用这个: -)

在使用 node 多年之后,我可以说目录/文件结构有 没有约定。然而,大多数(专业)快递应用程序使用如下设置:

/
/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/static/index.js

var express = require('express');


module.exports = function(app) {


app.use(express.static(app.settings.static.path));


};

这允许整齐地解耦所有源代码,而不必麻烦依赖关系。一个非常好的对抗恶意 Javascript 的解决方案。一个真实的例子是 附近,它使用这个设置。

更新(文件名) :

关于文件名,最常见的是 太短了小写文件名。如果文件只能用两个单词描述,那么大多数 JavaScript 项目都使用下划线作为分隔符。

更新(变量) :

关于变量,同样的“规则”适用于文件名。但是,原型或类应该使用 骆驼箱

更新(样式指南) :

没有约定,有一些逻辑结构。

我只能说: 永远不要使用 camelCase 文件和目录名。为什么?它可以工作,但是在 Mac 和 Windows 上,有些操作和有些操作没有什么不同。我遇到过这个问题,一次也没有。我需要一份这样的文件:

var isHidden = require('./lib/isHidden');

但遗憾的是,我创建了一个满是小写字母的文件: lib/ishidden.js。这招在 Mac 上很管用。它在我同事的 Mac 上运行良好。测试运行时没有错误。在部署之后,我们得到了一个巨大的错误:

Error: Cannot find module './lib/isHidden'

哦,是的。这是个 Linux 机器。因此,camelCase 目录结构可能是危险的。对于一个在 Windows 或 Mac 上开发的同事来说,这已经足够了。

因此,如果需要,可以使用下划线(_)或破折号(-)分隔符。

根据我的说法: 对于文件,如果 module.export 是一个对象,那么使用小驼峰大小写,我指的是一个单例模块。这也适用于 JSON 文件,因为它们在某种程度上也是单吨的。如果 module.export 返回一个构造函数,其作用类似于类,则使用大写驼峰大小写。

对于文件夹,请使用短名称。如果需要有多个单词,那么应该使用完全小写的“-”分隔,以便它能够在所有平台上一致地工作。

对所有包、文件夹和文件名使用 kebab-case

为什么?

您应该想象有一天,任何文件夹或文件都可能被解压缩到自己的包中。包不能包含大写字母。

新包的名称中不能有大写字母。 Https://docs.npmjs.com/files/package.json#name

因此,不应该使用 camelCase,这样就只剩下 snake_casekebab-case了。

到目前为止,kebab-case是最常见的约定。下划线的唯一用途是用于内部节点包,这只是早期的惯例。

基于“ 谷歌 JavaScript 样式指南

文件名必须全部小写,并且可以包括下划线(_)或 破折号(-) ,但没有额外的标点符号 文件名的扩展名必须是.js。

这是我的主意

project-name
app
controllers
somethings.controller.js
user-story.controller.js
users.controller.js
models
something.model.js
user.model.js
views
some-things
index.view.jade
users
login.view.jade
signup.view.jade