Saya baru saja membaca dokumentasi tentang express dan menemukan dua istilah ini, app.use();
danrouter.use();
Saya tahu app.use();
digunakan di node untuk Memasang middleware di jalur, dan kami sering menggunakannya di sebagian besar aplikasi node. tapi apakah router.use();
keduanya sama? jika tidak, apa bedanya?
Saya membaca tentang router di sini . Saya juga menemukan pertanyaan serupa di SO Apa perbedaan antara "express.Router" dan perutean menggunakan "app.get"? dan Perbedaan antara app.all ('*') dan app.use ('/') , tetapi mereka tidak benar-benar menjawab pertanyaan saya. Terima kasih.
router
. Kita hanya bisa melakukannya denganapp
. Apakah itu benar?router.use
tetapi jawaban ini menjawab mengacu padarouter.get
?router.use();
memasang middleware untuk rute yang dilayani oleh router tertentu,app.use();
memasang middleware untuk semua rute aplikasi (atau yang cocok dengan rute yang ditentukan jika Anda menggunakanapp.use('/ANYROUTESHERE', yourMiddleware());
).Contoh kasus penggunaan dapat berupa aplikasi dengan satu router dengan rute standar dan satu router yang menangani rute api, yang membutuhkan pengguna yang valid.
Anda kemudian akan memasang middleware otentikasi untuk router api hanya dengan
router.use(yourAuthMiddleware());
.Jika Anda akan memiliki aplikasi yang membutuhkan pengguna yang valid untuk semua rute, pasang middleware untuk aplikasi tersebut dengan
app.use(yourAuthMiddleware());
sumber
use
membuatnya di router lain? Sepertirouter1.use('/path', router2);
app.use () digunakan untuk memasang fungsi middleware atau fungsi di jalur yang ditentukan, fungsi middleware dijalankan ketika basis jalur yang diminta cocok dengan jalur.
router.use () digunakan untuk fungsi atau fungsi middleware, secara default mount path ke "/".
Tetapi di app.use () Anda harus memberikan jalur yang ditentukan seperti itu:
var adsRouter = require('./adsRouter.js'); app.use('/ads', adsRouter);
atau
app.use('/ads', function(req, res, next) { // write your callback code here. });
Tetapi saat menggunakan router.use () Anda hanya dapat memberikan middleware, seperti ini:
router.use(function(req, res, next) { console.log('%s %s %s', req.method, req.url, req.path); next(); });
atau
router.use('/test', function(req, res, next) { // write your callback code here. next(); });
atau
//in router.js router.use('/admin', authUtil.verifySessionId, authUtil.verifyLisencee); router.post('/admin', controllerIndex.ads.adListingAdmin);
Pada kode di atas ketika titik akhir adalah '/ admin' maka pertama akan memanggil authUtil.verifySessionId dan authUtil.verifyLisencee kemudian akan mengeksekusi baris berikutnya dengan titik akhir 'admin' dan sesuai dengan metode controllerIndex.ads.adListingAdmin.
sumber
app.use
jika Anda ingin menjalankan fungsi untuk setiap permintaan yang dibuat ke aplikasi.