579 Stimmen

ExpressJS Wie strukturiert man eine Anwendung?

Ich verwende das ExpressJS-Webframework für NodeJS.

Leute, die ExpressJS verwenden, legen ihre Umgebungen (Entwicklung, Produktion, Test...), ihre Routen usw. auf dem app.js . Ich denke, dass es nicht ein schöner Weg, weil, wenn Sie eine große Anwendung haben, app.js ist zu groß!

Ich möchte gerne diese Verzeichnisstruktur haben:

| my-application
| -- app.js
| -- config/
     | -- environment.js
     | -- routes.js

Hier ist mein Code:

app.js

var express = require('express');
var app = module.exports = express.createServer();

require('./config/environment.js')(app, express);
require('./config/routes.js')(app);

app.listen(3000);

config/environment.js

module.exports = function(app, express){
    app.configure(function() {
    app.use(express.logger());
    });

    app.configure('development', function() {
    app.use(express.errorHandler({
        dumpExceptions: true,
        showStack: true
    }));
    });

    app.configure('production', function() {
    app.use(express.errorHandler());
    });
};

config/routes.js

module.exports = function(app) {
    app.get('/', function(req, res) {
    res.send('Hello world !');
    });
};

Mein Code funktioniert gut und ich denke, dass die Struktur der Verzeichnisse schön ist. Allerdings musste der Code angepasst werden und ich bin mir nicht sicher, ob er gut/schön ist.

Ist es besser, meine Struktur von Verzeichnissen zu verwenden und den Code anzupassen oder einfach eine Datei (app.js) zu verwenden?

Vielen Dank für Ihre Ratschläge!

4voto

Abdul Moiz Punkte 146

Sails.js Struktur sieht schön und sauber zu mir, so dass ich MVC-Stil Struktur für meine Express-Projekte, ähnlich wie sails.js verwenden.

project_root  
|  
|_ _ app  
|_ _ |_ _ controllers  
|_ _ |_ _ |_ _ UserController.js  
|_ _ |_ _ middlewares  
|_ _ |_ _ |_ _ error.js  
|_ _ |_ _ |_ _ logger.js  
|_ _ |_ _ models  
|_ _ |_ _ |_ _ User.js  
|_ _ |_ _ services  
|_ _ |_ _ |_ _ DatabaseService.js  
|  
|_ _ config  
|_ _ |_ _ constants.js  
|_ _ |_ _ index.js  
|_ _ |_ _ routes.js  
|  
|_ _ public  
|_ _ |_ _ css  
|_ _ |_ _ images  
|_ _ |_ _ js  
|  
|_ _ views  
|_ _ |_ _ user  
|_ _ |_ _ |_ _ index.ejs  

App-Ordner - enthält die allgemeine Anmeldung für die Anwendung.
Ordner "Config - enthält App-Konfigurationen, Konstanten und Routen.
Öffentlicher Ordner - enthält Stile, Bilder, Skripte usw.
Ordner "Ansichten - enthält Ansichten für jedes Modell (falls vorhanden)

Ein Musterprojekt finden Sie hier,
https://github.com/abdulmoiz251/node-express-rest-api-boilerplate

3voto

Nitesh Oswal Punkte 98

So sieht der Großteil der Verzeichnisstruktur meines Expressprojekts aus.

Ich mache normalerweise eine express dirname um das Projekt zu initialisieren, verzeihen Sie mir meine Faulheit, aber es ist sehr flexibel und erweiterbar. PS - Sie müssen sich express-generator dafür (für diejenigen, die danach suchen sudo npm install -g express-generator , sudo, weil Sie es global installieren)

|-- bin
    |-- www //what we start with "forever"
|-- bower_components
|-- models
    |-- database.js
    |-- model1.js //not this exact name ofcourse.
    |-- .
|-- node_modules
|-- public
    |-- images
    |-- javascripts
        |-- controllers
        |-- directives
        |-- services
        |-- app.js
        |-- init.js //contains config and used for initializing everything, I work with angular a lot.
    |-- stylesheets
|-- routes
    |-- some
    |-- hierarchy
    .
    .
|-- views
    |-- partials
    |-- content
|-- .env
|-- .env.template
|-- app.js
|-- README.md

Sie fragen sich sicher, warum .env-Dateien? Weil sie funktionieren! Ich verwende dotenv Modul in meinen Projekten (in letzter Zeit häufig) und es funktioniert! Fügen Sie diese 2 Anweisungen in app.js o www

var dotenv = require('dotenv');
dotenv.config({path: path.join(__dirname + "/.env")});

Und eine weitere Zeile zum schnellen Einstellen /bower_components um statische Inhalte unter der Ressource /ext

app.use('/ext', express.static(path.join(__dirname, 'bower_components')));

Es kann wahrscheinlich eine Passform für Menschen, die suchen, um Express und Angular zusammen zu verwenden, oder nur ausdrücken, ohne dass javascripts Hierarchie, natürlich.

2voto

Odirlei Borgert Punkte 121

Meine Struktur express 4. https://github.com/odirleiborgert/borgert-express-boilerplate

Pakete

View engine: twig
Security: helmet
Flash: express-flash
Session: express-session
Encrypt: bcryptjs
Modules: express-load
Database: MongoDB
    ORM: Mongoose
    Mongoose Paginate
    Mongoose Validator
Logs: winston + winston-daily-rotate-file
Nodemon
CSS: stylus
Eslint + Husky

Struktur

|-- app
    |-- controllers
    |-- helpers
    |-- middlewares
    |-- models
    |-- routes
    |-- services
|-- bin
|-- logs
|-- node_modules
|-- public
    |-- components
    |-- images
    |-- javascripts
    |-- stylesheets
|-- views
|-- .env
|-- .env-example
|-- app.js
|-- README.md

1voto

Snivio Punkte 1567

Eine einfache Möglichkeit, Ihre Express-App zu strukturieren:

  • In main index.js sollte die folgende Reihenfolge eingehalten werden.

    alle app.set sollte an erster Stelle stehen.

    alle app.use sollte an zweiter Stelle stehen.

    gefolgt von anderen Apis mit ihren Funktionen oder route-continue in anderen Dateien

    Beispiel:

    app.use("/Passwort", passwordApi);

    app.use("/user", userApi);

    app.post("/token", passport.createToken);

    app.post("/logout", passport.logout)

1voto

Der beste Weg zu MVC Struktur für ExpressJs Projekt mit handlebar & Passportjs

- app
      -config 
        -passport-setup.js
      -controllers
      -middleware
      -models
      -routes
      -service
    -bin
      -www
      -configuration.js
      -passport.js
    -node_modules
    -views
     -handlebars page
    -env
    -.gitignore
    -package.json
    -package-lock.json

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X