在大型 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 ...
Js 不强制执行任何文件命名约定(除了 index.js)。Javascript 语言通常也是如此。你可以在这里找到许多线程,它们建议使用 camelCase、连字符和下划线,其中任何一个都可以很好地工作。所以这取决于你。选一个,坚持下去。
index.js
大多数人在 JS 中使用 camelCase。如果你想开源,我建议你使用这个: -)
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 上运行良好。测试运行时没有错误。在部署之后,我们得到了一个巨大的错误:
lib/ishidden.js
Error: Cannot find module './lib/isHidden'
哦,是的。这是个 Linux 机器。因此,camelCase 目录结构可能是危险的。对于一个在 Windows 或 Mac 上开发的同事来说,这已经足够了。
因此,如果需要,可以使用下划线(_)或破折号(-)分隔符。
根据我的说法: 对于文件,如果 module.export 是一个对象,那么使用小驼峰大小写,我指的是一个单例模块。这也适用于 JSON 文件,因为它们在某种程度上也是单吨的。如果 module.export 返回一个构造函数,其作用类似于类,则使用大写驼峰大小写。
对于文件夹,请使用短名称。如果需要有多个单词,那么应该使用完全小写的“-”分隔,以便它能够在所有平台上一致地工作。
对所有包、文件夹和文件名使用 kebab-case。
kebab-case
您应该想象有一天,任何文件夹或文件都可能被解压缩到自己的包中。包不能包含大写字母。
新包的名称中不能有大写字母。 Https://docs.npmjs.com/files/package.json#name
因此,不应该使用 camelCase,这样就只剩下 snake_case和 kebab-case了。
snake_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