Nuxt 3 Routing

Routing (Маршрутизация) — это важнейший аспект любого веб-приложения, позволяющий пользователям перемещаться между различными страницами и получать доступ к определенному контенту. Nuxt.js, популярный фреймворк, созданный на основе Vue.js, предоставляет мощные возможности маршрутизации. В этой статье мы рассмотрим различные методы маршрутизации в Nuxt 3, а также примеры кода, которые помогут вам понять и реализовать эффективную навигацию в ваших приложениях Nuxt.

Базовая маршрутизация с помощью pages

Nuxt 3 использует основанный на соглашениях подход к маршрутизации, при котором каждый файл в pages каталоге соответствует маршруту. Например, создание pages/about.vue файла автоматически создаст маршрут для /about URL-адреса. Вот пример базового компонента страницы:

<template>
  <div>
    <h1>About Page</h1>
    <!-- Content goes here -->
  </div>
</template>

Динамическая маршрутизация с параметрами

Иногда вам может потребоваться создать динамические маршруты, принимающие параметры. Nuxt 3 упрощает это, используя синтаксис имени файла. Например, создание файла с именем pages/users/[id].vue будет генерировать такие маршруты, как /users/1, /users/2 и т. д. Вы можете получить доступ к id параметру в компоненте как this.$route.params.id. Вот пример:

<template>
  <div>
    <h1>User Profile</h1>
    <p>Showing profile for user with ID: {{ $route.params.id }}</p>
    <!-- Content goes here -->
  </div>
</template>

Вложенные маршруты

Nuxt 3 поддерживает вложенные маршруты, которые полезны для организации сложных структур приложений. Создавая вложенные каталоги внутри pages каталога, вы можете определять вложенные маршруты. Например, pages/blog/index.vue будет соответствовать маршруту /blog, а pages/blog/post.vue будет соответствовать /blog/post. Вот пример:

<template>
  <div>
    <h1>Blog</h1>
    <!-- List of blog posts -->
    <router-view />
  </div>
</template>

Именованные маршруты

Именованные маршруты позволяют ссылаться на маршруты по их имени, а не по URL-пути, что упрощает обработку изменений в структуре маршрутизации. Вы можете определить именованные маршруты в nuxt.config.js файле и получить к ним доступ с помощью this.$router.name. Вот пример:

// nuxt.config.js
export default {
  router: {
    extendRoutes(routes, resolve) {
      routes.push({
        name: 'blog-post',
        path: '/blog/:slug',
        component: resolve(__dirname, 'pages/blog/post.vue')
      })
    }
  }
}
// Component usage
<template>
  <div>
    <h1>Blog Post</h1>
    <!-- Content goes here -->
  </div>
</template>
this.$router.push({ name: 'blog-post', params: { slug: 'my-blog-post' } })

Программная навигация

Помимо декларативной навигации с использованием <nuxt-link>, Nuxt 3 предоставляет параметры программной навигации по $router объекту. Вы можете использовать такие методы, как $router.push() и $router.replace() для программной навигации. Вот пример:

methods: {
  goToAboutPage() {
    this.$router.push('/about')
  }
}

Вывод

В этой статье мы рассмотрели различные методы маршрутизации в Nuxt 3. Мы рассмотрели базовую маршрутизацию с помощью страниц, динамическую маршрутизацию с параметрами, вложенные маршруты, именованные маршруты и программную навигацию. Используя эти методы, вы можете создать надежную и гибкую навигацию в своих приложениях Nuxt, обеспечивая удобство работы с пользователем.