Node.js文件和文件夹的项目命名约定

2022-08-30 01:48:11

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

我应该大写,骆驼大小写还是分数过低?

即。这被认为是有效的吗?

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

答案 1

使用 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

更新(样式指南):


答案 2

用于所有包、文件夹和文件名。kebab-case

为什么?

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

新包的名称中不得包含大写字母。https://docs.npmjs.com/files/package.json#name

因此,切勿使用。这留下了和.camelCasesnake_casekebab-case

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