Después de algunos años con el nodo, puedo decir que no hay convenciones para la estructura de directorios / archivos. Sin embargo, la mayoría de las aplicaciones express (profesionales) utilizan una configuración como:
/
/bin - scripts, helpers, binaries
/lib - your application
/config - your configuration
/public - your public files
/test - your tests
Un ejemplo que usa esta configuración es nodejs-starter .
Personalmente cambié esta configuración a:
/
/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
En mi opinión, el último encaja mejor con la estructura de directorios estilo Unix (mientras que el primero mezcla esto un poco).
También me gusta este patrón para separar archivos:
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));
};
Esto permite desacoplar perfectamente todo el código fuente sin tener que molestar a las dependencias. Una muy buena solución para luchar contra el desagradable Javascript. Un ejemplo del mundo real está cerca que usa esta configuración.
Actualizar (nombres de archivo):
En cuanto a los nombres de archivo, los más comunes son los nombres de archivo cortos y en minúsculas . Si su archivo solo se puede describir con dos palabras, la mayoría de los proyectos de JavaScript utilizan un guión bajo como delimitador.
Actualización (variables):
En cuanto a las variables, se aplican las mismas "reglas" que para los nombres de archivo. Los prototipos o clases, sin embargo, deben usar camelCase .
Actualización (guías de estilo):