2016-04-15 9 views
11

Ich habe Tutorials für express.js wie this gesehen, die von Grund auf neu mit ihrer eigenen app.js-Datei beginnen und mit dem Express-Generator verzichten.Learning node.js/express.js: Was ist der Deal mit bin/www?

Meine Frage: Für Anfänger, die versuchen zu verstehen, wie man diese Werkzeuge benutzt und eine einfache Webanwendung erstellt, sollte ich mich mit bin/www befassen oder sollte ich nur den Port innerhalb von app.js definieren?

Die einzige Funktionalität, die ich derzeit in bin/www verstehe, ist das Einstellen des Ports. Ist der Express-Generator einfach aufgebläht mit Edge-Case-Funktionalität, die für einen Anfänger zu viel ist?

+0

kann in beide Richtungen gehen. Basierend auf Ihren Vorlieben. Ich entscheide mich selten für Express-Generator. Es ist nur für die Anwendung/Ordner Skelett. Ich erstelle normalerweise meine eigene Ordnerstruktur, mit der ich mich wohl fühle. Ist wirklich egal. – FRizal

Antwort

13

app.js

  • enthält alle Middleware (body-Parser, Morgan, usw.) und Routen.
  • exportiert App-Objekt zuletzt.

www

  • hier entsteht ein Http und übergibt App als Handler

var server = http.createServer(app);

  • daneben auch den Hafen setzt server.listen(port);
  • setzt auch die Funktionen aufgerufen werden, wenn ein Fehler auftritt, während Sie den Server starten: server.on('error', onError);

Erklärung so, im Grunde ist es alles entfernt erstellen und Server-Code von Ihrem app.js starten und lassen Sie sich nur konzentrieren auf dem Anwendungslogikteil. Hinweis: Wenn Sie in package.json Datei sehen würden Sie dies beachten:

"scripts": { 
    "start": "node ./bin/www" 
} 

dies bedeutet, wenn Sie in Terminal npm start geben, dann wird es automatisch die ./bin/www Datei starten.

+1

Müssen Sie die .bin/www-Datei in Ihrer Quellcodeverwaltung hinzufügen? –

+1

@RobbertDraaisma Ja, Sie müssen es in Ihre Quellcodeverwaltung aufnehmen, da es Ihr Einstiegspunkt ist. – Nivesh

16

Dies ist der Grund, durch einen ausdrücklichen Maintainer kurz und bündig erklärt:

So können Sie benötigen ('./ App') aus externen Dateien und den Express- App bekommen, die nicht auf einem beliebig Port lauscht (denke Unit Tests und ähnliches).

source

+3

Dies sollte die angenommenen Antworten sein !! – snatera