Jak wymagać wszystkich plików w folderze w node.js?
potrzebujesz czegoś takiego:
files.forEach(function (v,k){
// require routes
require('./routes/'+v);
}};
javascript
node.js
directory
require
Złupić
źródło
źródło
var routes = require('auto-load')('routes');
z nowymauto-load
modułem [pomogłem go stworzyć].Odpowiedzi:
Gdy podana jest ścieżka folderu, będzie szukał pliku index.js w tym folderze; jeśli istnieje, wykorzystuje to, a jeśli nie, to zawiedzie.
Prawdopodobnie najbardziej sensowne byłoby (jeśli masz kontrolę nad folderem) utworzenie pliku index.js, a następnie przypisanie wszystkich „modułów”, a następnie po prostu tego wymagać.
twoj_plik.js
index.js
Jeśli nie znasz nazw plików, powinieneś napisać jakiś moduł ładujący.
Przykład roboczy programu ładującego:
źródło
require
podano ścieżkę do folderu, będzie szukałindex.js
w tym folderze; jeśli istnieje, wykorzystuje to, a jeśli nie, to zawiedzie. Zobacz github.com/christkv/node-mongodb-native, aby zobaczyć przykład tego w świecie rzeczywistym: Windex.js
katalogu głównym jest wymagany./lib/mongodb
katalog;./lib/mongodb/index.js'
udostępnia wszystko inne w tym katalogu.require
jest funkcją synchroniczną, więc nie ma korzyści z oddzwaniania. Zamiast tego użyłbym fs.readdirSync.package.json
tego katalogu. Tak jak:{main: './lib/my-custom-main-file.js'}
Polecam użycie glob do wykonania tego zadania.
źródło
glob
? masz na myśliglob-savior-of-the-nodejs-race
. Najlepsza odpowiedź.Bazując na rozwiązaniu @ tbranyen, tworzę
index.js
plik, który ładuje dowolne skrypty javascript w bieżącym folderze jako częśćexports
.Następnie możesz
require
ten katalog z dowolnego innego miejsca.źródło
/\.js(on)?$/
byłoby lepsze. Nie jest też!== null
zbędny?Inną opcją jest użycie pakietu wymagany-katalog, który pozwala wykonać następujące czynności. Obsługuje również rekurencję.
źródło
require-dir
ponieważ automatycznie wyklucza plik wywołujący (indeks) i domyślnie przyjmuje bieżący katalog. Doskonały.require-dir
dodanofilter
opcję.Mam folder / pola pełne plików z jedną klasą, na przykład:
Upuść to w polach / index.js, aby wyeksportować każdą klasę:
To sprawia, że moduły zachowują się bardziej jak w Pythonie:
źródło
Jeszcze jedną opcją jest połączenie wszystkich wymaganych pakietów z najpopularniejszych pakietów.
Najpopularniejszy
require-dir
nie ma opcji filtrowania plików / katalogów i nie mamap
funkcji (patrz poniżej), ale używa małej sztuczki, aby znaleźć bieżącą ścieżkę modułu.Po drugie, według popularności
require-all
ma filtrowanie wyrażeń regularnych i przetwarzanie wstępne, ale brakuje mu ścieżki względnej, więc musisz użyć__dirname
(ma to zalety i przeciwieństwa):Wspomniany tutaj
require-index
jest dość minimalistyczny.Ze
map
można zrobić wstępne przetwarzanie, jak tworzyć obiekty i przekazać wartości config (zakładając modułów poniżej konstruktorów eksportu):źródło
Wiem, że to pytanie ma ponad 5 lat i podane odpowiedzi są dobre, ale chciałem czegoś nieco mocniejszego dla express, więc stworzyłem
express-map2
pakiet dla npm. Chciałem to nazwać po prostuexpress-map
, ale ludzie w Yahoo już mają pakiet o tej nazwie, więc musiałem zmienić nazwę mojego pakietu.1. podstawowe zastosowanie:
użycie kontrolera:
2. zaawansowane użycie z prefiksami:
Jak widać, oszczędza to mnóstwo czasu i sprawia, że routing aplikacji jest bardzo prosty do napisania, utrzymania i zrozumienia. obsługuje wszystkie czasowniki http, które wyrażają wsparcie, a także specjalną
.all()
metodę.źródło
Jeden moduł, którego używałem do tego dokładnego przypadku użycia, jest wymagany .
Rekurencyjnie wymaga wszystkich plików w danym katalogu i jego podkatalogach, o ile nie pasują one do
excludeDirs
właściwości.Pozwala także określić filtr pliku i dowiedzieć się, w jaki sposób uzyskać klucze zwróconego skrótu z nazw plików.
źródło
Korzystam z modułu kopiowania do modułów węzłów, aby utworzyć pojedynczy plik, który wymaga wszystkich plików w naszym systemie opartym na NodeJS.
Kod naszego pliku narzędziowego wygląda następująco:
We wszystkich plikach większość funkcji jest zapisywana jako eksport, podobnie jak:
Zatem, aby użyć dowolnej funkcji z pliku, wystarczy wywołać:
źródło
Rozwijanie tego
glob
rozwiązania. Zrób to, jeśli chcesz zaimportować wszystkie moduły z katalogu do,index.js
a następnie zaimportować toindex.js
w innej części aplikacji. Zauważ, że literały szablonów nie są obsługiwane przez silnik podświetlania używany przez stackoverflow, więc kod może tutaj wyglądać dziwnie.Pełny przykład
Struktura katalogów
globExample / example.js
globExample / foobars / index.js
globExample / foobars / nieoczekiwany.js
globExample / foobars / barit.js
globExample / foobars / fooit.js
Z projektu wewnętrznego z
glob
zainstalowanym uruchomnode example.js
źródło
Można użyć: https://www.npmjs.com/package/require-file-directory
źródło
Wymagaj wszystkich plików z
routes
folderu i zastosuj jako oprogramowanie pośrednie. Nie są wymagane żadne zewnętrzne moduły.źródło
Korzystanie z tej funkcji może wymagać całego reż.
źródło
Jeśli dołączysz wszystkie pliki * .js do katalogu („app / lib / *. Js”):
W katalogu app / lib
przyklad.js:
przyklad-2.js:
W aplikacji katalogowej utwórz plik index.js
index.js:
źródło