Link Search Menu Expand Document

Routes

Rotas é a maneira de se criar as páginas usando VUE, por meio de um plugin, que tomará conta de implementar a url requisitada com o componente desejado.

Instalação

// Para Vue 3
npm i vue-router@4

Utilização

Crie um arquivo .JS dentro da pasta src/routes, ou qualquer outra maneira que desejar e inclua o seguinte código;

// Importa o plugin
import { createRouter, createWebHashHistory } from "vue-router"

// Importa os componentes principais das páginas
import HomeView from '../views/HomeView.vue'
import ContactView from '../views/ContactView.vue'

// Cria as rotas baseadas no path da url
const routes = [
    {path: '/', component: HomeView},
    {path: '/contact', component: ContactView}
]

// Cria a rota
const router = createRouter({
    history: createWebHashHistory(),
    routes
})

// Exporta para ser utilizado no main.js
export default router;

Agora importe o router no main.js e insira no vue:

import { createApp } from 'vue'
import App from './App.vue'
import router from './routes'

createApp(App)
    .use(router) // Especifica para utilizar as rotas
    .mount('#app')

Transitions

Para fazer transições entre as páginas, o vue cria situações perfeitas, que permitem que a troca de página tenha uma animação da escolha do usuário, através de css, fazendo com que a experiência do usuário seja melhorada por ele não ver que a página foi recarregada.

<template>
  <main>
    <HomeHeader />


    // No vue 3 a transição é feita dessa maneira
    <router-view v-slot="{ Component }">
      <transition name="fade" mode="out-in">
        <component :is="Component" />
      </transition>
    </router-view>


  </main>
</template>

// CSS padrão para as transições
<style>
  .fade-enter-from,
  .fade-leave-to{
    opacity: 0;
  }

  .fade-enter-active,
  .fade-leave-active{
    transition: opacity 0.25s ease-out;
  }
</style>

Usando os navs

<router-link to="/">Go to Home</router-link>