2017-01-05 1 views
0

Ich habe ein Projekt von einem anderen Entwickler aufgenommen, verwendet den typischen MEAN-Stack mit dem Einstiegspunkt server.js.NODE JS APP: Was bedeutet diese Notation?

nun in server.js, das Modul, das tut:

var express = require('express'); 
var app  = express(); 
var passport = require('passport'); 

Es gibt noch 2 Zeilen Code, die aussehen wie sie irgendeine Art von Routing tun, aber ich kann nicht herausfinden, was es tatsächlich bedeutet: aus dem globalen Bereich

require('./routes.js')(app, passport); 
require('./apiRequest/authenticate')(app, passport); 

ich bin verwirrt, weil es wie require() sieht genannt wird, während alle anderen Routing-Methoden App abgeblasen werden, dh app.use(). Kann jemand erklären, was die Parametersätze bedeuten, und warum gibt es auch zwei Sätze, wo require() aufgerufen wird, wird es von Express zur Verfügung gestellt?

Antwort

0

routes.js und apiRequest/authenticate sind zwei lokale (Projekt) Module/JS-Dateien, die hier grundsätzlich benötigt werden.

express und passport sind Knotenmodule/Bibliotheken, die von npm_modules über die Knotenmodulauflösung bereitgestellt werden.

app ist einfach eine Express-Instanz, die durch Aufrufen der Express-Modul-/Standardfunktion erstellt wird.

Die Parameter, die an die erforderlichen lokalen Module (routes und authenticate) übergeben werden, sind nur an diese Module übergebene Parameter (default exportierte Funktion), die in diesen Dateien weiterverwendet werden können (zB wenn Sie in routes.js suchen dass sie verwenden app.use(..., wo App als param sowie der Passmodul gegeben ist)

Um die Syntax require('./routes.js')(app, passport); deutlicher zu erklären:

  1. require - Knoten OOB-Funktion für Module in die aktuelle Datei/Modul einge
  2. require('./routes.js') löst den Standard-Export aus der routes.js-Datei, die in diesem Fall eine Funktion
  3. ...(app, passport) diese Funktion (von oben Punkt) ist, wird dann mit dem mitgelieferten params aufgerufen (die zuvor hier definiert wurde - dh mit erfordern importiert)
+0

Okay, bedeutet das in Punkt 3, ** diese Funktion wird mit den bereitgestellten Parametern ** aufgerufen, dass es eine beliebige Anzahl von Parametern geben kann? oder kann es nur 2 geben, und was ist die eigentliche Funktion, für die diese die Parameter sind, ist es "require()"? –

+0

Die Funktion ist diejenige, die in der 'routes.js'-Datei definiert ist (die eine Projektdatei im selben Ordner wie die Datei sein sollte, in der der Code steht) - es wird eine Funktion definiert, die exportiert wird, und das ist es Funktion, die hier aufgerufen wird. Die Anzahl der erwarteten Parameter kann nur angezeigt werden, wenn Sie sich diese Datei ansehen, da sie davon abhängt, wie viel die exportierte Funktion erwartet und was sie damit macht. Beachten Sie, dass in JS-Funktionen keine statische Anzahl erforderlicher Parameter vorhanden ist, es ist im Allgemeinen konventionsbasiert, wie viele zu liefern sind, welche optional sind usw. –

+0

Oh natürlich! Ja, das macht wirklich klar, mein Freund, Kumpel! –