Po kilku latach z node, mogę powiedzieć, że nie ma żadnych konwencji dotyczących struktury katalogów / plików. Jednak większość (profesjonalnych) aplikacji ekspresowych używa konfiguracji takiej jak:
/
/bin - scripts, helpers, binaries
/lib - your application
/config - your configuration
/public - your public files
/test - your tests
Przykładem używającym tej konfiguracji jest nodejs-starter .
Osobiście zmieniłem tę konfigurację na:
/
/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
Moim zdaniem ten drugi lepiej pasuje do struktury katalogów w stylu uniksowym (podczas gdy ten pierwszy trochę to miesza).
Podoba mi się też ten wzorzec do oddzielania plików:
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));
};
Pozwala to na dokładne oddzielenie całego kodu źródłowego bez konieczności przejmowania się zależnościami. Naprawdę dobre rozwiązanie do walki z okropnym Javascriptem. W pobliżu znajduje się przykład ze świata rzeczywistego, który korzysta z tej konfiguracji.
Aktualizacja (nazwy plików):
Dotyczące nazwy plików są najczęściej krótkie , małe nazwy plików. Jeśli plik można opisać tylko dwoma słowami, większość projektów JavaScript używa znaku podkreślenia jako separatora.
Aktualizacja (zmienne):
W odniesieniu do zmiennych obowiązują te same „zasady”, jak w przypadku nazw plików. Prototypy lub klasy powinny jednak używać camelCase .
Aktualizacja (przewodniki stylistyczne):