Wie benötige ich alle Dateien in einem Ordner in node.js?
brauche so etwas wie:
files.forEach(function (v,k){
// require routes
require('./routes/'+v);
}};
javascript
node.js
directory
require
Harry
quelle
quelle
var routes = require('auto-load')('routes');
mit dem neuenauto-load
Modul [Ich habe geholfen, es zu erstellen].Antworten:
Wenn require den Pfad eines Ordners erhält, sucht er in diesem Ordner nach einer index.js-Datei. Wenn es eine gibt, wird diese verwendet, und wenn dies nicht der Fall ist, schlägt sie fehl.
Es wäre wahrscheinlich am sinnvollsten (wenn Sie die Kontrolle über den Ordner haben), eine index.js-Datei zu erstellen und dann alle "Module" zuzuweisen und diese dann einfach zu benötigen.
yourfile.js
index.js
Wenn Sie die Dateinamen nicht kennen, sollten Sie eine Art Loader schreiben.
Arbeitsbeispiel eines Laders:
quelle
require
der Pfad eines Ordners angegeben wird, wirdindex.js
in diesem Ordner nach einem gesucht. Wenn es eine gibt, wird diese verwendet, und wenn dies nicht der Fall ist, schlägt sie fehl. Ein Beispiel aus der Praxis finden Sie unter github.com/christkv/node-mongodb-native :index.js
Im Stammverzeichnis ist ein Verzeichnis erforderlich./lib/mongodb
, für das ein Verzeichnis erforderlich ist../lib/mongodb/index.js'
stellt alles andere in diesem Verzeichnis zur Verfügung.require
ist eine synchrone Funktion, sodass der Rückruf keine Vorteile bietet. Ich würde stattdessen fs.readdirSync verwenden.package.json
in diesem Verzeichnis geändert werden . Wie so:{main: './lib/my-custom-main-file.js'}
Ich empfehle, glob zu verwenden, um diese Aufgabe zu erfüllen.
quelle
glob
? du meinstglob-savior-of-the-nodejs-race
. Beste Antwort.Basierend auf der Lösung von @ tbranyen erstelle ich eine
index.js
Datei, die beliebige Javascripts unter den aktuellen Ordner als Teil des lädtexports
.Dann können Sie
require
dieses Verzeichnis von jedem anderen Ort aus.quelle
/\.js(on)?$/
besser. Auch ist nicht!== null
redundant?Eine andere Option ist die Verwendung des Pakets require-dir , mit dem Sie Folgendes tun können. Es unterstützt auch die Rekursion.
quelle
require-dir
weil die aufrufende Datei (Index) automatisch ausgeschlossen wird und standardmäßig das aktuelle Verzeichnis verwendet wird. Perfekt.require-dir
einefilter
Option hinzugefügt .Ich habe einen Ordner / Felder voller Dateien mit jeweils einer Klasse, z.
Legen Sie dies in fields / index.js ab, um jede Klasse zu exportieren:
Dadurch verhalten sich die Module mehr wie in Python:
quelle
Eine weitere Option ist die Kombination von Funktionen aus den gängigsten Paketen.
Am beliebtesten sind
require-dir
keine Optionen zum Filtern der Dateien / Verzeichnisse und keinemap
Funktion (siehe unten), es wird jedoch ein kleiner Trick verwendet, um den aktuellen Pfad des Moduls zu finden.Zweitens nach Popularität
require-all
hat Regexp Filterung und Vorverarbeitung, aber es fehlt ein relativer Pfad, so dass Sie verwenden müssen__dirname
(dies hat Vor- und Nachteile) wie:Erwähnt hier
require-index
ist ziemlich minimalistisch.Mit
map
können Sie einige Vorverarbeitungen durchführen, z. B. Objekte erstellen und Konfigurationswerte übergeben (vorausgesetzt, Module unterhalb der Exportkonstruktoren):quelle
Ich weiß, dass diese Frage mindestens 5 Jahre alt ist und die gegebenen Antworten gut sind, aber ich wollte etwas Stärkeres für Express, also habe ich das
express-map2
Paket für npm erstellt. Ich wollte es einfach benennenexpress-map
, aber die Leute bei Yahoo haben bereits ein Paket mit diesem Namen, also musste ich mein Paket umbenennen.1. Grundgebrauch:
Controller-Nutzung:
2. Erweiterte Verwendung mit Präfixen:
Wie Sie sehen, spart dies eine Menge Zeit und macht das Routing Ihrer Anwendung kinderleicht zu schreiben, zu warten und zu verstehen. Es unterstützt alle http-Verben, die Unterstützung ausdrücken, sowie die speziellen
.all()
Methode.quelle
Ein Modul, das ich für diesen genauen Anwendungsfall verwendet habe, ist require-all .
Es erfordert rekursiv alle Dateien in einem bestimmten Verzeichnis und seinen Unterverzeichnissen, solange sie nicht mit dem übereinstimmen
excludeDirs
Eigenschaft .Außerdem können Sie einen Dateifilter angeben und die Schlüssel des zurückgegebenen Hash aus den Dateinamen ableiten.
quelle
Ich verwende Knotenmodule Copy-to-Modul eine einzelne Datei zu erstellen , um alle Dateien in unserem NodeJS-basierten System erfordern.
Der Code für unsere Dienstprogrammdatei sieht folgendermaßen aus:
In allen Dateien werden die meisten Funktionen wie folgt als Exporte geschrieben:
Um eine Funktion aus einer Datei zu verwenden, rufen Sie einfach Folgendes auf:
quelle
Erweiterung dieser
glob
Lösung. Tun Sie dies, wenn Sie alle Module aus einem Verzeichnis in ein anderesindex.js
importieren und dieses dannindex.js
in einen anderen Teil der Anwendung importieren möchten . Beachten Sie, dass Vorlagenliterale von der vom Stackoverflow verwendeten Hervorhebungs-Engine nicht unterstützt werden, sodass der Code hier möglicherweise seltsam aussieht.Vollständiges Beispiel
Verzeichnisaufbau
globExample / example.js
globExample / foobars / index.js
globExample / foobars / unerwartete.js
globExample / foobars / barit.js
globExample / foobars / fooit.js
Aus dem Projekt mit
glob
installiertem ausführennode example.js
quelle
Kann verwenden: https://www.npmjs.com/package/require-file-directory
quelle
Benötigen Sie alle Dateien aus dem
routes
Ordner und wenden Sie sie als Middleware an. Keine externen Module erforderlich.quelle
Mit dieser Funktion können Sie ein ganzes Verzeichnis benötigen.
quelle
Wenn Sie alle Dateien von * .js in das Verzeichnisbeispiel aufnehmen ("app / lib / *. Js"):
Im Verzeichnis app / lib
example.js:
Beispiel-2.js:
In der Verzeichnis-App erstellen Sie index.js
index.js:
quelle