2016-04-15 16 views
11

Ho visto tutorial per express.js come this che partono da zero con il loro proprio file app.js e perdono l'utilizzo del generatore express.Apprendimento node.js/express.js: Qual è l'accordo con bin/www?

La mia domanda: per i principianti che stanno cercando di capire come utilizzare questi strumenti e creare un'applicazione Web di base dovrei occuparmi di bin/www o dovrei semplicemente definire la porta all'interno di app.js?

L'unica funzionalità attualmente comprensibile in bin/www è l'impostazione della porta. Il generatore di espresso è semplicemente gonfio di funzionalità del case marginale, che è troppo per un principiante?

+0

può andare in entrambi i modi. In base alle tue preferenze Raramente scelgo il generatore express. È solo per scheletri applicazione/cartella. Normalmente creo la mia struttura di cartelle con le quali mi trovo a mio agio. Non importa davvero – FRizal

risposta

13

app.js

  • contiene tutte le middleware (corpo-parser, Morgan, ecc) e percorsi.
  • esporta l'oggetto app all'ultimo.

www

  • qui si crea un'applicazione HTTPServer e passa come il gestore

var server = http.createServer(app);

  • oltre imposta anche il porto server.listen(port);
  • imposta anche le funzioni per essere chiamato se si verifica un errore durante l'avvio del server: server.on('error', onError);

Spiegazione così, in fondo si rimuove tutto il creare e avviare codice server dai vostri app.js e ti permettono di concentrarsi solo sulla parte logica dell'applicazione. Nota: Se si vede in package.json file che si nota questo:

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

questo significa che se si digita nel terminale npm start allora si avvierà automaticamente il file ./bin/www.

+1

Devi aggiungere il file .bin/www nel tuo controllo sorgente? –

+1

@RobbertDraaisma Sì, è necessario includerlo nel controllo sorgente in quanto è il punto di ingresso. – Nivesh

16

Ecco la ragione, ha dichiarato succintamente da un manutentore espresso:

in modo da poter richiedere ('./ app') da file esterni e ottenere il app espresso che non è in ascolto su qualsiasi porta (pensa ai test unitari e simili).

source

+3

Queste dovrebbero essere le risposte accettate !! – snatera