Après quelques années avec node, je peux dire qu'il n'y a pas de conventions pour la structure répertoire / fichier. Cependant, la plupart des applications express (professionnelles) utilisent une configuration telle que:
/
/bin - scripts, helpers, binaries
/lib - your application
/config - your configuration
/public - your public files
/test - your tests
Un exemple qui utilise cette configuration est nodejs-starter .
J'ai personnellement changé cette configuration en:
/
/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
À mon avis, ce dernier correspond mieux à la structure de répertoires de style Unix (alors que le premier mélange un peu cela).
J'aime aussi ce modèle pour séparer les fichiers:
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));
};
Cela permet de découpler parfaitement tout le code source sans avoir à déranger les dépendances. Une très bonne solution pour lutter contre le mauvais Javascript. Un exemple du monde réel est à proximité qui utilise cette configuration.
Mise à jour (noms de fichiers):
En ce qui concerne les noms de fichiers , les noms de fichiers courts et minuscules sont les plus courants . Si votre fichier ne peut être décrit qu'avec deux mots, la plupart des projets JavaScript utilisent un trait de soulignement comme délimiteur.
Mise à jour (variables):
Concernant les variables, les mêmes «règles» s'appliquent que pour les noms de fichiers. Cependant, les prototypes ou les classes doivent utiliser camelCase .
Mise à jour (guides de style):