当前位置:首页 > VUE

vue 实现router-view

2026-02-24 23:42:57VUE

Vue Router 的基本用法

在 Vue.js 中使用 router-view 需要先安装并配置 Vue Router。以下是实现步骤:

安装 Vue Router:

npm install vue-router

在项目中创建路由配置文件(通常为 router/index.js):

import { createRouter, createWebHistory } from 'vue-router'
import Home from '../views/Home.vue'
import About from '../views/About.vue'

const routes = [
  { path: '/', component: Home },
  { path: '/about', component: About }
]

const router = createRouter({
  history: createWebHistory(),
  routes
})

export default router

在主应用中使用路由

main.jsmain.ts 中导入并使用路由:

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

const app = createApp(App)
app.use(router)
app.mount('#app')

在组件中使用 router-view

在 App.vue 或布局组件中添加 router-view

<template>
  <div id="app">
    <nav>
      <router-link to="/">Home</router-link>
      <router-link to="/about">About</router-link>
    </nav>
    <router-view></router-view>
  </div>
</template>

路由嵌套的实现

可以通过 children 属性实现嵌套路由:

const routes = [
  {
    path: '/user',
    component: UserLayout,
    children: [
      { path: 'profile', component: UserProfile },
      { path: 'posts', component: UserPosts }
    ]
  }
]

在父组件模板中添加嵌套的 router-view

<template>
  <div class="user">
    <h2>User</h2>
    <router-view></router-view>
  </div>
</template>

命名视图的使用

Vue Router 支持多个命名视图:

const routes = [
  {
    path: '/',
    components: {
      default: Home,
      sidebar: Sidebar,
      footer: Footer
    }
  }
]

在模板中指定视图名称:

<template>
  <div>
    <router-view></router-view>
    <router-view name="sidebar"></router-view>
    <router-view name="footer"></router-view>
  </div>
</template>

路由过渡效果

可以为 router-view 添加过渡动画:

<template>
  <router-view v-slot="{ Component }">
    <transition name="fade" mode="out-in">
      <component :is="Component" />
    </transition>
  </router-view>
</template>

<style>
.fade-enter-active,
.fade-leave-active {
  transition: opacity 0.5s ease;
}
.fade-enter-from,
.fade-leave-to {
  opacity: 0;
}
</style>

路由守卫的应用

可以在路由配置中添加导航守卫:

router.beforeEach((to, from, next) => {
  if (to.meta.requiresAuth && !isAuthenticated()) {
    next('/login')
  } else {
    next()
  }
})

动态路由的实现

使用参数实现动态路由匹配:

const routes = [
  { path: '/user/:id', component: User }
]

在组件中访问路由参数:

<template>
  <div>User ID: {{ $route.params.id }}</div>
</template>

或使用组合式 API:

vue 实现router-view

import { useRoute } from 'vue-router'

const route = useRoute()
console.log(route.params.id)

标签: vuerouter
分享给朋友:

相关文章

vue实现autocomplete

vue实现autocomplete

Vue 实现 Autocomplete 功能 Vue 中实现 Autocomplete(自动完成)功能可以通过自定义组件或使用现有库完成。以下是几种常见方法: 方法一:使用 Vue 原生实现 创建…

vue实现选区

vue实现选区

Vue 实现选区的基本方法 在Vue中实现选区功能通常涉及DOM操作和事件处理。以下是几种常见的方法: 使用原生JavaScript的Selection API 通过window.getSelec…

vue评分实现

vue评分实现

Vue 评分组件实现方法 使用第三方库(如 Element UI) 安装 Element UI: npm install element-ui 引入并注册组件: import Vue from '…

vue 实现级联

vue 实现级联

Vue 实现级联选择器 级联选择器(Cascader)常用于省市区选择、分类选择等场景。Vue 中可以通过 Element UI、Ant Design Vue 等 UI 库实现,也可以手动封装。 使…

vue 动画 实现

vue 动画 实现

vue 动画实现方法 Vue 提供了多种方式实现动画效果,主要包括过渡动画和动态动画两类。 使用 <transition> 组件实现基础过渡 通过 Vue 内置的 <transit…

分页实现vue

分页实现vue

分页实现(Vue) 在Vue中实现分页功能通常需要结合前端分页逻辑和后端API支持。以下是两种常见的实现方式: 前端分页实现 适用于数据量较小的情况,直接在客户端完成分页逻辑。 <templ…