Nuxt3 революционизирует маршрутизацию в веб-приложениях. Эта особенность Nuxt3 действительно свидетельствует об их видении: сосредоточьтесь на создании, а не на настройке. Маршрутизация в Nuxt3 выполняется в зависимости от того, как вы структурируете свой проект. Он использует Vue Router под капотом и автоматически настраивает его для вас.

Создание проекта

Для начала нам нужно запустить команды для запуска нового проекта Nuxt.

npx nuxi init nuxt3-routing
cd nuxt3-routing
npm install
code .
npm run dev

И VS Code откроется с начальным шаблоном, и вы увидите страницу приветствия Nuxt3 в своем браузере.

Начало работы с маршрутизацией Nuxt3

Начальный шаблон Nuxt3 предоставляет вам файл app.vue, и обычно вы хотите сохранить его. Но если вы работаете с маршрутизацией, вам нужно удалить этот файл и создать каталог pages/. Обратите внимание, имя каталога должно быть точным. Внутри этого вы должны создать файл index.vue, и это ваша новая страница для вашего домашнего экрана. Теперь ваш каталог должен выглядеть так:

node_modules/
pages/
 |- index.vue
.gitigore
README.md
nuxt.config.ts
package.json
package-lock.json
tsconfig.json

Всякий раз, когда пользователь запрашивает страницу '/', файл vue pages/index.vue должен отображаться на экране.

Добавление маршрутов

Например, вы создаете веб-сайт социальной сети, который имеет 4 раздела,

1. Главная — ваша лента, где вы можете просматривать посты ваших друзей.

2. Ваш профиль — здесь можно просмотреть ваши собственные сообщения.

3. Новый — создайте новый пост, чтобы добавить его в свой профиль.

4. Профиль — просмотреть все посты вашего друга.

Вы хотите, чтобы их маршруты были '/', /profile', '/new' и /profile/{username} соответственно. Вы должны создать каталоги внутри pages/ таким образом, чтобы они соответствовали маршруту, который вы хотите создать.

node_modules/
pages/
 |- new.vue
 |- profile/
 | |- index.vue
 | |- [username].vue
 |- index.vue
.gitigore
README.md
nuxt.config.ts
package.json
package-lock.json
tsconfig.json

Примечание.pages/index.vue относится к '/'. pages/new.vue относится к '/new'. pages/profile/index.vue относится к '/profile'. pages/profile/[username].vue относится к '/profile/{username}'.

Вы можете добавить свой собственный код Nuxt3 в эти файлы и запросить у локального хост-сервера различные маршруты и протестировать функциональность.

Извлечение параметров маршрута

Внутри <script setup /> вы можете использовать что-то, известное как composable, чтобы получить параметры маршрута. Внутри <template /> вы можете использовать $route для доступа к ним. Добавьте следующий код в pages/profile/[username].vue,

<script setup lang="ts">
const route = useRoute() // auto-imports
console.log(route.params.username)
</script>
<template>
  <div>
    This is your friend's - {{ $route.params.username }} - page
  </div>
</template>

Внутренняя маршрутизация

Вместо простого использования простого тега <a href="#"/> рассмотрите возможность использования <NuxtLink to="#" />, так как он напрямую взаимодействует с Vue Router для навигации между страницами.

<template>
  <NuxtLink to="https://cybercoder-naj.github.io">
    Visit my website
  </NuxtLink>
</template>

Определение страницы 404

Создать 404 — Not Found невозможно проще, чем в Nuxt3. Все, что вам нужно сделать, это добавить 404.vue в каталог pages/ и добавить макет страницы, которую вы хотите сохранить.