Nach einigen Jahren mit Node kann ich sagen, dass es keine Konventionen für die Verzeichnis- / Dateistruktur gibt. Die meisten (professionellen) Express-Anwendungen verwenden jedoch ein Setup wie:
/
/bin - scripts, helpers, binaries
/lib - your application
/config - your configuration
/public - your public files
/test - your tests
Ein Beispiel, das dieses Setup verwendet, ist nodejs-Starter .
Ich persönlich habe dieses Setup geändert in:
/
/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
Meiner Meinung nach passt Letzteres besser zur Unix-ähnlichen Verzeichnisstruktur (während Ersteres dies ein wenig durcheinander bringt).
Ich mag dieses Muster auch, um Dateien zu trennen:
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));
};
Dies ermöglicht eine saubere Entkopplung des gesamten Quellcodes, ohne sich um Abhängigkeiten kümmern zu müssen. Eine wirklich gute Lösung, um böses Javascript zu bekämpfen. Ein reales Beispiel ist in der Nähe , das dieses Setup verwendet.
Update (Dateinamen):
In Bezug auf Dateinamen am häufigsten sind kurz , Klein Kleindateinamen.Wenn Ihre Datei nur mit zwei Wörtern beschrieben werden kann, verwenden die meisten JavaScript-Projekte einen Unterstrich als Trennzeichen.
Update (Variablen):
In Bezug auf Variablen gelten die gleichen "Regeln" wie für Dateinamen. Prototypen oder Klassen sollten jedoch camelCase verwenden .
Update (Styleguides):