Routing oparty na plikach i automatyczny import
Utworzy Pan/Pani strony w katalogu pages/ na potrzeby automatycznego routingu, pozna segmenty dynamiczne i wykorzysta automatyczne importy Nuxt dla komponentów oraz composables.
Routing oparty na plikach i automatyczny import to bezpłatna lekcja Frontend Academy na CoddyKit. To lekcja 1 z 4. 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 Frontend Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Frontend Academy zawiera 4 lekcji w sumie.
Nuxt 3 — framework SSR dla Vue
Nuxt 3 jest dla Vue tym, czym Next.js jest dla Reacta: opiniotwórczym frameworkiem do SSR, SSG, routingu opartego na plikach, pobierania danych i rozbudowanego systemu automatycznych importów.
Katalog pages/
Umieść komponenty Vue w pages/, a staną się trasami — nie trzeba konfigurować routera.
pages/
index.vue // route: /
about.vue // route: /about
blog/
index.vue // route: /blog
[slug].vue // route: /blog/:slug
users/
[id]/
profile.vue // route: /users/:id/profileTrasy dynamiczne z [param]
Kwadratowe nawiasy w nazwach plików tworzą segmenty dynamiczne. Parametry są dostępne za pomocą useRoute().
<!-- pages/blog/[slug].vue -->
<script setup>
const route = useRoute();
const { data: post } = await useFetch(`/api/posts/${route.params.slug}`);
</script>
<template>
<article>
<h1>{{ post.title }}</h1>
<div v-html="post.body" />
</article>
</template>Trasy typu catch-all
Użyj [...slug].vue dla tras typu catch-all — dopasowują one każdą ścieżkę znajdującą się w tym folderze.
// pages/docs/[...slug].vue
// matches /docs/getting-started, /docs/api/auth, etc.
<script setup>
const route = useRoute();
console.log(route.params.slug); // ['api', 'auth']
</script>Layouty
Komponenty w layouts/ opakowują strony. Aktywny layout dla strony ustaw za pomocą definePageMeta.
<!-- layouts/dashboard.vue -->
<template>
<div class="dashboard">
<Sidebar />
<main><slot /></main>
</div>
</template>
<!-- pages/dashboard/index.vue -->
<script setup>
definePageMeta({ layout: 'dashboard' });
</script>Domyślny layout
layouts/default.vue jest stosowany do każdej strony, dla której nie określono layoutu.
Nawigacja za pomocą NuxtLink
Użyj <NuxtLink> do nawigacji po stronie klienta — Nuxt pobiera wstępnie powiązane strony po najechaniu kursorem.
<template>
<nav>
<NuxtLink to="/">Home</NuxtLink>
<NuxtLink to="/blog">Blog</NuxtLink>
<NuxtLink :to="`/users/${userId}`">Profile</NuxtLink>
</nav>
</template>Nawigacja programowa
Użyj navigateTo() w setup lub handlerach zdarzeń.
<script setup>
async function onLogin() {
await login(form);
await navigateTo('/dashboard');
}
</script>Automatyczne importy — komponenty
Umieść komponent w components/ i używaj go w dowolnym szablonie bez importowania — Nuxt skanuje je i rejestruje.
components/
AppHeader.vue
UserCard.vue
<!-- any page or component: -->
<template>
<AppHeader />
<UserCard :user="user" />
</template>Automatyczne importy — composables
Composables znajdujące się w composables/ są importowane automatycznie.
// composables/useCounter.ts
export const useCounter = () => {
const count = ref(0);
const increment = () => count.value++;
return { count, increment };
};
<!-- any component: -->
<script setup>
const { count, increment } = useCounter(); // no import needed!
</script>Automatyczne importy — narzędzia
Narzędzia Vue (ref, reactive, computed, watch itd.) oraz narzędzia Nuxt (useFetch, useState, navigateTo) są importowane automatycznie.
Wyłączanie automatycznych importów
Można wyłączyć konkretny automatyczny import w nuxt.config.ts, jeśli powoduje konflikt z czymś innym.
export default defineNuxtConfig({
imports: {
autoImport: false // disable all auto-imports
}
});Szybki test
Jak utworzyć w Nuxt 3 trasę dopasowującą każdą ścieżkę znajdującą się pod /docs/?
Podsumowanie: routing i automatyczne importy
Folder pages/ tworzy trasy. [param] służy do tras dynamicznych, a [...slug] do tras typu catch-all. Layouty w layouts/ wybiera się za pomocą definePageMeta. Do nawigacji służą NuxtLink i navigateTo. Komponenty, composables oraz narzędzia Vue i Nuxt są importowane automatycznie — nie trzeba dodawać importów ręcznie. W razie potrzeby można wyłączyć tę funkcję w nuxt.config.ts.
Często zadawane pytania
Czy lekcja „Routing oparty na plikach i automatyczny import” jest bezpłatna?
Tak — pełny tekst „Routing oparty na plikach i automatyczny import” 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 Frontend Academy, przejdź na CoddyKit PRO. Kurs Frontend Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Routing oparty na plikach i automatyczny import”?
Utworzy Pan/Pani strony w katalogu pages/ na potrzeby automatycznego routingu, pozna segmenty dynamiczne i wykorzysta automatyczne importy Nuxt dla komponentów oraz composables. Ćwiczysz Frontend 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ąć Frontend Academy?
Nie wymagamy żadnego doświadczenia. Frontend 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 1 z 4.
Ile czasu zajmuje lekcja „Routing oparty na plikach i automatyczny import”?
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 Frontend Academy?
Tak. Każda lekcja Frontend 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
- Routing oparty na plikach i automatyczny import
- useFetch i useAsyncData
- Moduły Nuxt: obrazy, uwierzytelnianie i i18n
- Wdrażanie: statyczne a SSR