Wie fügen Sie Routenhandler in mehrere Dateien in Express ein?
In meinem NodeJS express
Anwendung habe ich app.js
hat ein paar gemeinsame Routen. Dann in eine wf.js
Datei möchte ich definieren, ein paar mehr Strecken.
Wie bekomme ich app.js
zu erkennen, andere route-Handler definiert in wf.js
- Datei?
Einem einfachen erfordern scheint nicht zu funktionieren.
Kommentar zu dem Problem
überprüfen Sie diese Antwort stackoverflow.com/a/38718561/1153703
InformationsquelleAutor der Frage rafidude | 2011-05-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie wollen legen Sie die Routen in eine separate Datei, zum Beispiel
routes.js
, können Sie dieroutes.js
- Datei in dieser Art:Und dann können Sie verlangen es von
app.js
vorbei an derapp
Objekt in dieser Weise:Haben auch einen Blick auf diese Beispiele
InformationsquelleAutor der Antwort BFil
Gebäude auf @ShadowCloud 's Beispiel war ich in der Lage, dynamisch alle Routen in einem sub-Verzeichnis.
routes/index.js
Dann legte route Dateien, die im routes-Verzeichnis, etwa so:
routes/test1.js
Wiederholen, dass Sie für so viele Male, wie ich brauchte, und dann schließlich in app.js Platzierung
InformationsquelleAutor der Antwort Sam Corder
Obwohl dies eine ältere Frage stieß ich hier auf der Suche nach einer Lösung für ein ähnliches Problem. Nach versuchen, einige der Lösungen, die ich hier landete, in eine andere Richtung und dachte, ich möchte hinzufügen, meine Lösung für alle anderen, die hier landet.
In express 4.x Sie können eine Instanz der router-Objekt und importieren Sie eine Datei, enthält mehr Wege. Sie können dies sogar rekursiv, so Ihre Routen importieren Sie andere Routen, so dass Sie erstellen einfach, um url-Pfade. Zum Beispiel, wenn ich eine separate route-Datei für meine '/Test' Endpunkt bereits und möchten fügen Sie einen neuen Satz von Routen, die für '/tests/automatisiert " ich kann wollen, brechen diese '/automatisierte " - Strecken sich in einer anderen Datei, um meine '/test' die Datei klein und einfach zu verwalten. Außerdem können Sie logisch-Gruppe Routen zusammen, die durch URL-Pfad, die wirklich bequem.
Inhalt ./app.js:
Inhalt ./routes/tests.js
Inhalt ./routes/testRoutes/automated.js:
InformationsquelleAutor der Antwort ShortRound1911
Und bauen noch mehr auf die Vorherige Antwort, diese version von routes/index.js ignoriert alle Dateien, die nicht endet .js (und sich selbst)
InformationsquelleAutor der Antwort Brad Proctor
Vollständige rekursive routing aller
.js
Dateien in/routes
Ordner, legen Sie diese inapp.js
.in
/routes
Sie setzenwhatevername.js
und initialisieren Sie Ihre Routen wie diese:InformationsquelleAutor der Antwort infinity1975
Einer zwicken, um alle diese Antworten:
Nur einen regex verwenden, um filter über die Prüfung jeder einzelnen Datei in dem array. Es ist nicht rekursiv, aber es wird herausfiltern Ordner, nicht am Ende .js
InformationsquelleAutor der Antwort regretoverflow
Ich weiß, das ist eine alte Frage, aber ich habe versucht, herauszufinden, so etwas wie für mich, und dies ist der Ort, den ich landete, so wollte ich meine Lösung für ein ähnliches problem, wenn jemand anderes hat die gleichen Probleme, die ich habe. Es ist ein schöner Knoten-Modul es als überlassen, das eine Menge von Datei-system-Kram, der hier zu sehen ist (ie - keine readdirSync Zeug). Zum Beispiel:
Ich habe einen restful-API-Anwendung, die ich bin versucht zu bauen und ich möchte alle requests gehen an die '/api/*' authentifiziert werden, und ich will alle meine Routen in der api in ein eigenes Verzeichnis (nennen wir es einfach 'api'). Im Hauptteil der app:
Innerhalb des Strecken-Verzeichnis habe ich ein Verzeichnis namens "api" und eine Datei namens api.js. In api.js ich einfach haben:
Funktionierte alles wie erwartet. Hoffe, das jemand hilft.
InformationsquelleAutor der Antwort Mike S.
Wenn Sie eine separate .js-Datei, um besser zu organisieren Sie Ihre Routen, erstellen Sie einfach eine variable in der
app.js
- Datei, zeigen seine Position im Dateisystem:dann,
wo
.foo
ist eine Funktion deklariert, die in Ihremwf.js
- Datei. e.gInformationsquelleAutor der Antwort NiallJG
Dies ist möglicherweise die meisten awesome stack overflow Frage/Antwort(en), je. Ich Liebe Sam ' s/Brads oben genannten Lösungen. Dachte, ich würde in Glockenspiel mit dem async-version, die ich umgesetzt habe:
Meine directory-Struktur ist ein wenig anders. Ich definieren in der Regel Strecken in app.js (im root-Verzeichnis des Projektes) durch
require
-ing'./routes'
. Folglich, ich überspringe die Prüfung gegenindex.js
weil ich wollen zu zählen, dass man als gut.BEARBEITEN:
Sie können auch setzen Sie diese in eine Funktion und rufen Sie es rekursiv (bearbeitete ich das Beispiel, um dies zu zeigen), wenn Sie Sie verschachteln möchten Ihre Routen in Ordnern mit beliebiger Tiefe.
InformationsquelleAutor der Antwort tandrewnichols
Schrieb ich ein kleines plugin dafür! krank schreiben, den gleichen code immer und immer wieder.
https://www.npmjs.com/package/js-file-req
Hoffe, es hilft.
InformationsquelleAutor der Antwort Evan Burbidge