0Pricing
Vue Academy · Lekcja

Strażnicy nawigacji

Zabezpieczą Państwo trasy i uruchomią logikę podczas nawigacji za pomocą strażników.

Strażnicy nawigacji to bezpłatna lekcja Vue Academy na CoddyKit. To lekcja 3 z 3. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Vue Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Vue Academy zawiera 3 lekcji w sumie.

Czym są strażniki nawigacji?

Strażniki nawigacji pozwalają uruchamiać kod przed zmianą trasy, w jej trakcie lub po niej.

  • Blokowanie lub przekierowywanie nawigacji
  • Sprawdzanie uwierzytelnienia
  • Potwierdzanie zamiaru opuszczenia strony

Rodzaje strażników

Istnieją trzy poziomy strażników:

  • strażniki globalne uruchamiają się przy każdej nawigacji
  • strażniki dla pojedynczej trasy uruchamiają się tylko dla jednej określonej trasy
  • strażniki wewnątrz komponentu uruchamiają się w komponencie

Globalny strażnik beforeEach

router.beforeEach uruchamia się przed każdą nawigacją. Otrzymuje docelową i bieżącą trasę.

router.beforeEach((to, from) => {
  console.log("going to", to.path)
  // return true to allow,
  // or a route to redirect
})

Zezwalanie na nawigację i przekierowywanie

W Vue Router 4 należy zwrócić wartość, aby sterować przebiegiem nawigacji.

  • Zwrócenie true lub niczego pozwala na nawigację
  • Zwrócenie false anuluje nawigację
  • Zwrócenie lokalizacji trasy przekierowuje na inną trasę
router.beforeEach((to) => {
  if (to.meta.requiresAuth && !isLoggedIn()) {
    return { name: "login" }
  }
  return true
})

Pola meta trasy

Do tras można dołączyć własne dane meta, takie jak requiresAuth, a następnie odczytywać je w strażnikach.

const routes = [
  {
    path: "/dashboard",
    component: Dashboard,
    meta: { requiresAuth: true }
  }
]

Strażnik uwierzytelniania

Popularny wzorzec polega na ochronie tras przez sprawdzanie uwierzytelnienia w globalnym strażniku.

router.beforeEach((to) => {
  const authed = localStorage.getItem("token")
  if (to.meta.requiresAuth && !authed) {
    return { name: "login", query: { redirect: to.fullPath } }
  }
})

beforeEnter dla pojedynczej trasy

beforeEnter chroni pojedynczą trasę bezpośrednio w jej definicji.

const routes = [
  {
    path: "/admin",
    component: Admin,
    beforeEnter: (to, from) => {
      return isAdmin() ? true : { name: "home" }
    }
  }
]

Strażniki wewnątrz komponentu

Komponenty mogą definiować własne strażniki. onBeforeRouteLeave uruchamia się podczas opuszczania trasy.

import { onBeforeRouteLeave } from "vue-router"

onBeforeRouteLeave((to, from) => {
  if (hasUnsavedChanges.value) {
    return window.confirm("Leave without saving?")
  }
})

onBeforeRouteUpdate

onBeforeRouteUpdate uruchamia się, gdy trasa się zmienia, ale ten sam komponent jest ponownie używany, na przykład po zmianie parametru.

import { onBeforeRouteUpdate } from "vue-router"

onBeforeRouteUpdate((to) => {
  loadUser(to.params.id)
})

Callback next — styl klasyczny

Starszy kod używa trzeciego argumentu, next, do sterowania nawigacją. Obecnie zalecane jest zwracanie wartości.

// Classic style with next()
router.beforeEach((to, from, next) => {
  if (canAccess(to)) {
    next()         // proceed
  } else {
    next("/login") // redirect
  }
})

Zwracana wartość a next()

Dwa style, ten sam cel:

  • Zwracanie wartości — nowoczesne i czytelniejsze: true, false lub lokalizacja
  • Wywołanie next() — styl klasyczny: kontynuowanie lub przekierowanie

Nie należy łączyć tych stylów w jednym strażniku. W nowym kodzie zalecany jest styl oparty na zwracaniu wartości.

Szybkie sprawdzenie

Proszę sprawdzić swoją wiedzę na temat strażników nawigacji.

Podsumowanie: strażniki nawigacji

W tej części nauczyli się Państwo sterować nawigacją:

  • Globalny strażnik beforeEach uruchamia się dla każdej trasy
  • Zwrócenie true zezwala na nawigację, false ją anuluje, a lokalizacja przekierowuje na inną trasę
  • Pola meta, takie jak requiresAuth, sterują sprawdzaniem uwierzytelnienia
  • beforeEnter chroni pojedynczą trasę
  • Strażniki wewnątrz komponentu, takie jak onBeforeRouteLeave, obsługują opuszczanie trasy

Ukończyli Państwo podstawowy kurs Vue.js!

Często zadawane pytania

Czy lekcja „Strażnicy nawigacji” jest bezpłatna?

Tak — pełny tekst „Strażnicy nawigacji” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Vue Academy, przejdź na CoddyKit PRO. Kurs Vue Academy zawiera 3 lekcji w sumie.

Co nauczysz się w „Strażnicy nawigacji”?

Zabezpieczą Państwo trasy i uruchomią logikę podczas nawigacji za pomocą strażników. Ćwiczysz Vue Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Vue Academy?

Nie wymagamy żadnego doświadczenia. Vue Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 3.

Ile czasu zajmuje lekcja „Strażnicy nawigacji”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Vue Academy?

Tak. Każda lekcja Vue Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Konfiguracja Vue Router
  2. Zagnieżdżone i dynamiczne trasy
  3. Strażnicy nawigacji
← Powrót do Vue Academy