Bagaimana cara saya meminta semua file dalam folder di node.js?
butuh sesuatu seperti:
files.forEach(function (v,k){
// require routes
require('./routes/'+v);
}};
javascript
node.js
directory
require
Harry
sumber
sumber
var routes = require('auto-load')('routes');
denganauto-load
modul baru [saya membantu membuatnya].Jawaban:
Ketika mengharuskan diberikan path folder, itu akan mencari file index.js di folder itu; jika ada, ia menggunakan itu, dan jika tidak ada, itu gagal.
Mungkin akan lebih masuk akal (jika Anda memiliki kendali atas folder) untuk membuat file index.js dan kemudian menetapkan semua "modul" dan kemudian hanya memerlukannya.
yourfile.js
index.js
Jika Anda tidak tahu nama file Anda harus menulis semacam loader.
Contoh kerja loader:
sumber
require
diberi lintasan folder, ia akan mencariindex.js
di dalam folder itu; jika ada, ia menggunakan itu, dan jika tidak ada, itu gagal. Lihat github.com/christkv/node-mongodb-native untuk contoh dunia nyata ini: Adaindex.js
di direktori root yang memerlukan./lib/mongodb
, direktori;./lib/mongodb/index.js'
membuat segala sesuatu yang lain di direktori itu tersedia.require
adalah fungsi sinkron sehingga tidak ada manfaat dari panggilan balik. Saya akan menggunakan fs.readdirSync sebagai gantinya.package.json
dalam direktori ini. Seperti itu:{main: './lib/my-custom-main-file.js'}
Saya sarankan menggunakan glob untuk menyelesaikan tugas itu.
sumber
glob
? Anda maksudglob-savior-of-the-nodejs-race
. Jawaban Terbaik.Berdasarkan solusi @ tbranyen, saya membuat
index.js
file yang memuat javascripts sewenang-wenang di folder saat ini sebagai bagian dariexports
.Maka Anda dapat
require
direktori ini dari mana saja.sumber
/\.js(on)?$/
akan lebih baik. Juga tidak!== null
berlebihan?Pilihan lain adalah menggunakan paket dir-membutuhkan yang memungkinkan Anda melakukan hal berikut. Ini mendukung rekursi juga.
sumber
require-dir
karena secara otomatis mengecualikan file panggilan (indeks) dan default ke direktori saat ini. Sempurna.require-dir
menambahkanfilter
opsi.Saya memiliki folder / bidang yang penuh dengan file dengan masing-masing kelas, mis:
Letakkan ini di bidang / index.js untuk mengekspor setiap kelas:
Ini membuat modul bertindak lebih seperti pada Python:
sumber
Satu lagi opsi adalah keharusan-dir-semua menggabungkan fitur dari paket paling populer.
Paling populer
require-dir
tidak memiliki opsi untuk memfilter file / dir dan tidak memilikimap
fungsi (lihat di bawah), tetapi menggunakan trik kecil untuk menemukan jalur modul saat ini.Kedua berdasarkan popularitas
require-all
memiliki penyaringan dan preprocessing regexp, tetapi tidak memiliki jalur relatif, sehingga Anda perlu menggunakan__dirname
(ini memiliki pro dan kontra) seperti:Disebutkan di sini
require-index
cukup minimalis.Dengan
map
Anda dapat melakukan beberapa preprocessing, seperti membuat objek dan memberikan nilai konfigurasi (dengan asumsi modul di bawah ekspor konstruktor):sumber
Saya tahu pertanyaan ini berumur 5+ tahun, dan jawaban yang diberikan bagus, tetapi saya ingin sesuatu yang lebih kuat untuk diekspresikan, jadi saya membuat
express-map2
paket untuk npm. Saya akan menyebutkannya secara sederhanaexpress-map
, namun orang - orang di yahoo sudah memiliki paket dengan nama itu, jadi saya harus mengganti nama paket saya.1. penggunaan dasar:
penggunaan pengontrol:
2. penggunaan lanjutan, dengan awalan:
Seperti yang Anda lihat, ini menghemat banyak waktu dan membuat perutean aplikasi Anda menjadi mudah untuk ditulis, dirawat, dan dipahami. ini mendukung semua kata kerja http yang mengekspresikan dukungan, serta
.all()
metode khusus .sumber
Satu modul yang telah saya gunakan untuk kasus penggunaan yang tepat ini adalah wajib semua .
Secara rekursif membutuhkan semua file dalam direktori dan sub direktori yang diberikan selama mereka tidak cocok dengan
excludeDirs
properti.Ini juga memungkinkan menentukan filter file dan cara menurunkan kunci hash yang dikembalikan dari nama file.
sumber
Saya menggunakan modul simpul, salin ke modul untuk membuat satu file yang memerlukan semua file di sistem berbasis NodeJS kami.
Kode untuk file utilitas kami terlihat seperti ini:
Di semua file, sebagian besar fungsi ditulis sebagai ekspor, seperti:
Jadi, untuk menggunakan fungsi apa pun dari file, Anda cukup memanggil:
sumber
Memperluas solusi ini
glob
. Lakukan ini jika Anda ingin mengimpor semua modul dari direktori keindex.js
dan kemudian mengimpornyaindex.js
di bagian lain dari aplikasi. Perhatikan bahwa templat literal tidak didukung oleh mesin penyorotan yang digunakan oleh stackoverflow sehingga kode mungkin terlihat aneh di sini.Contoh Lengkap
Struktur direktori
globExample / example.js
globExample / foobars / index.js
globExample / foobars / tak terduga.js
globExample / foobars / barit.js
globExample / foobars / fooit.js
Dari proyek dalam dengan
glob
terinstal , jalankannode example.js
sumber
Dapat menggunakan: https://www.npmjs.com/package/require-file-directory
sumber
Wajibkan semua file dari
routes
folder dan terapkan sebagai middleware. Tidak diperlukan modul eksternal.sumber
Dengan menggunakan fungsi ini, Anda dapat meminta dir lengkap.
sumber
Jika Anda memasukkan semua file * .js dalam contoh direktori ("app / lib / *. Js"):
Dalam aplikasi direktori / lib
contoh.js:
contoh-2.js:
Dalam aplikasi direktori buat index.js
index.js:
sumber