Dalam express
aplikasi NodeJS saya, saya memiliki app.js
beberapa rute umum. Kemudian dalam sebuah wf.js
file saya ingin mendefinisikan beberapa rute lagi.
Bagaimana saya bisa app.js
mengenali penangan rute lain yang ditentukan dalam wf.js
file?
Sebuah sederhana membutuhkan tampaknya tidak bekerja.
Jawaban:
Jika Anda ingin meletakkan rute dalam file terpisah , misalnya
routes.js
, Anda dapat membuatroutes.js
file dengan cara ini:Dan kemudian Anda bisa meminta itu dari
app.js
melewatkanapp
objek dengan cara ini:Lihat juga contoh-contoh ini
sumber
Meskipun ini pertanyaan yang lebih tua saya tersandung di sini mencari solusi untuk masalah serupa. Setelah mencoba beberapa solusi di sini saya akhirnya pergi ke arah yang berbeda dan berpikir saya akan menambahkan solusi saya untuk orang lain yang berakhir di sini.
Di express 4.x Anda bisa mendapatkan instance objek router dan mengimpor file lain yang berisi lebih banyak rute. Anda bahkan dapat melakukan ini secara rekursif sehingga rute Anda mengimpor rute lain yang memungkinkan Anda membuat jalur url yang mudah dikelola. Sebagai contoh jika saya sudah memiliki file rute terpisah untuk titik akhir '/ tes' saya dan ingin menambahkan set rute baru untuk '/ tes / otomatis' Saya mungkin ingin memecah rute '/ otomatis' ini ke file lain untuk simpan file '/ test' saya kecil dan mudah dikelola. Ini juga memungkinkan Anda mengelompokkan rute secara logis bersama dengan jalur URL yang benar-benar nyaman.
Isi dari ./app.js:
Isi ./routes/tests.js
Isi dari ./routes/testRoutes/automated.js:
sumber
Membangun pada contoh @ShadowCloud, saya dapat secara dinamis memasukkan semua rute dalam sub direktori.
route / index.js
Kemudian menempatkan file rute di direktori rute seperti:
rute / test1.js
Mengulangi sebanyak yang saya butuhkan dan akhirnya menempatkan app.js
sumber
Dan membangun lebih banyak pada jawaban sebelumnya, versi rute / index.js ini akan mengabaikan semua file yang tidak diakhiri dengan .js (dan sendiri)
sumber
.DS_Store
file dan itu mengacaukan semuanya.Perutean rekursif penuh semua
.js
file di dalam/routes
folder, masukkan iniapp.js
.di
/routes
Anda menempatkanwhatevername.js
dan menginisialisasi rute Anda seperti ini:sumber
Saya mencoba memperbarui jawaban ini dengan "express": "^ 4.16.3". Jawaban ini mirip dengan ShortRound1911.
server.js
/src/routes/index.js
/src/routes/siswa_route.js
Saya harap ini bisa membantu seseorang. Selamat coding!
sumber
Jika Anda menggunakan express-4.x dengan TypeScript dan ES6, ini akan menjadi templat terbaik untuk digunakan:
src/api/login.ts
src/app.ts
Jauh lebih bersih daripada menggunakan
var
danmodule.exports
.sumber
Satu tweak untuk semua jawaban ini:
Cukup gunakan regex untuk memfilter melalui pengujian setiap file dalam array. Ini tidak rekursif, tetapi akan menyaring folder yang tidak berakhir dengan .js
sumber
Saya tahu ini adalah pertanyaan lama, tetapi saya mencoba untuk mencari tahu sesuatu seperti untuk diri saya sendiri dan ini adalah tempat saya akhirnya, jadi saya ingin menempatkan solusi saya untuk masalah yang sama kalau-kalau ada orang lain yang memiliki masalah yang sama saya ' Saya memiliki. Ada modul simpul yang bagus di luar sana yang disebut konsinyasi yang melakukan banyak hal sistem file yang terlihat di sini untuk Anda (yaitu - tidak ada hal readdirSync). Sebagai contoh:
Saya memiliki aplikasi API yang saya coba untuk membangun dan saya ingin meletakkan semua permintaan yang pergi ke '/ api / *' untuk diautentikasi dan saya ingin menyimpan semua rute saya yang masuk ke direktori mereka sendiri (sebut saja 'api'). Di bagian utama aplikasi:
Di dalam direktori rute, saya memiliki direktori bernama "api" dan file bernama api.js. Di api.js, saya hanya punya:
Semuanya bekerja seperti yang diharapkan. Semoga ini bisa membantu seseorang.
sumber
Jika Anda ingin file .js terpisah untuk mengatur rute Anda dengan lebih baik, cukup buat variabel di
app.js
file yang menunjuk ke lokasinya di sistem file:kemudian,
di mana
.foo
beberapa fungsi dideklarasikan dalamwf.js
file Anda . misalnyasumber
wf.foo
, dll. Karena mereka berada di luar ruang lingkup seperti solusi lain yang disajikan? Saya merujuk pada kasus di mana biasanya Anda akan mengakses variabel / fungsi bersama di wf.foo jika tidak dipisahkan dari app.js.Saya menulis sebuah plugin kecil untuk melakukan ini! bosan menulis kode yang sama berulang-ulang.
https://www.npmjs.com/package/js-file-req
Semoga ini bisa membantu.
sumber
Ini mungkin pertanyaan / jawaban (stack) overflow stack paling mengagumkan yang pernah ada. Saya suka solusi Sam / Brad di atas. Saya pikir saya akan berpadu dengan versi async yang saya terapkan:
Struktur direktori saya sedikit berbeda. Saya biasanya mendefinisikan rute di app.js (di direktori root proyek) dengan
require
-ing'./routes'
. Akibatnya, saya melewatkan cekindex.js
karena saya ingin memasukkan yang juga.EDIT: Anda juga dapat meletakkan ini dalam suatu fungsi dan menyebutnya secara rekursif (saya mengedit contoh untuk menunjukkan ini) jika Anda ingin membuat sarang rute Anda di folder dengan kedalaman sewenang-wenang.
sumber
Anda dapat menempatkan semua fungsi rute di file lain (modul), dan menautkannya ke file server utama. di file kilat utama, tambahkan fungsi yang akan menautkan modul ke server:
dan panggil fungsi itu untuk setiap model rute:
dalam file modul (misalnya - file login.js), tentukan fungsinya seperti biasa:
dan mengekspornya dengan metode permintaan sebagai kunci dan nilainya adalah array objek, masing-masing dengan path dan tombol fungsi.
sumber