Depois de alguns anos com nó, posso dizer que existem há convenções para a estrutura de diretório / arquivo. No entanto, a maioria dos aplicativos express (profissionais) usam uma configuração como:
/
/bin - scripts, helpers, binaries
/lib - your application
/config - your configuration
/public - your public files
/test - your tests
Um exemplo que usa essa configuração é nodejs-starter .
Eu pessoalmente mudei essa configuração para:
/
/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
Na minha opinião, o último combina melhor com a estrutura de diretórios no estilo Unix (enquanto o primeiro mistura isso um pouco).
Também gosto desse padrão para separar arquivos:
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));
};
Isso permite separar perfeitamente todo o código-fonte sem ter que incomodar as dependências. Uma solução realmente boa para combater o Javascript desagradável. Um exemplo do mundo real próximo, que usa essa configuração.
Atualizar (nomes de arquivos):
Em relação aos nomes de arquivo, os mais comuns são nomes de arquivo curtos e em minúsculas . Se o seu arquivo só pode ser descrito com duas palavras, a maioria dos projetos JavaScript usa um sublinhado como delimitador.
Atualizar (variáveis):
Com relação às variáveis, as mesmas "regras" se aplicam aos nomes de arquivos. Protótipos ou classes, no entanto, devem usar camelCase .
Atualização (guias de estilo):