Nuxt'da middleware qanday ishlaydi?

MiddleNuxt.js #nuxt #middleware #routing

Savol

Nuxt'da route middleware nima va ular qanday turlarga bo'linadi?

Qisqa javob

Route middleware — sahifaga o'tishdan oldin bajariladigan funksiyalar. Avtorizatsiyani tekshirish, redirektlar, renderlashdan oldin zaruriy ma'lumotlarni yuklash uchun ishlatiladi.

Batafsil javob

Middleware'ni e'lon qilishning uchta usuli:

  1. Nomlangan — middleware/auth.ts fayli, definePageMeta({ middleware: 'auth' }) orqali ulanadi.
  2. Global — .global.ts qo'shimchali fayl (middleware/analytics.global.ts), har bir navigatsiyada avtomatik bajariladi.
  3. Inline — aniq sahifada definePageMeta({ middleware: [...] }) ichida to'g'ridan-to'g'ri funksiya.

Middleware'ning signaturasi — (to, from) => { ... }. Ichida quyidagilarni bajarish mumkin:

  • redirekt uchun return navigateTo('/login') chaqirish;
  • o'tishni bekor qilish uchun abortNavigation('Xabar') qaytarish;
  • hech narsa qaytarmaslik — navigatsiya odatdagidek davom etadi.

Middleware'lar sahifa renderlanishidan oldin, quyidagi tartibda bajariladi: global → sahifada ko'rsatilgan nomlangan middleware'lar.

Misol

// middleware/auth.ts
export default defineNuxtRouteMiddleware((to) => {
  const isAuthenticated = useState('authenticated')

  if (!isAuthenticated.value && to.path !== '/login') {
    return navigateTo('/login')
  }
})
<script setup>
definePageMeta({
  middleware: 'auth'
})
</script>

Qo'shimcha savollar

  • Route middleware server middleware'dan (server/middleware/) nimasi bilan farq qiladi?
  • Sahifaning birinchi yuklanishida middleware serverda bajariladimi?
  • Middleware'dan sahifaning o'ziga ma'lumotni qanday uzatish mumkin?