当前位置:首页 > 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 属性实现嵌套路由:

vue 实现router-view

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 添加过渡动画:

vue 实现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:

import { useRoute } from 'vue-router'

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

标签: vuerouter
分享给朋友:

相关文章

vue组件实现

vue组件实现

Vue 组件实现基础 Vue 组件是 Vue.js 的核心特性之一,允许将 UI 拆分为独立、可复用的模块。组件的实现包括定义、注册、数据传递和生命周期管理等。 定义组件 组件可以通过单文件组件(.…

实现 vue ssr

实现 vue ssr

Vue SSR 实现方法 Vue SSR(Server-Side Rendering)通过服务器端渲染 Vue 应用,提升首屏加载速度和 SEO 友好性。以下是核心实现方法: 基础配置 安装必要…

vue 实现列表

vue 实现列表

Vue 实现列表的方法 在 Vue 中实现列表通常使用 v-for 指令,结合数组或对象数据渲染动态列表。以下是几种常见的实现方式: 基础列表渲染 使用 v-for 指令遍历数组,渲染列表项。ite…

vue实现selectable

vue实现selectable

Vue 实现可选择的 Select 组件 在 Vue 中实现一个可选择的 Select 组件,可以通过以下几种方式: 使用原生 HTML select 元素 <template>…

vue实现dag

vue实现dag

Vue实现DAG(有向无环图) 在Vue中实现DAG(Directed Acyclic Graph,有向无环图)通常涉及数据结构的建模、可视化渲染以及交互逻辑处理。以下是关键实现步骤和示例代码:…

vue实现数据

vue实现数据

Vue 实现数据绑定的方法 Vue.js 提供了多种方式实现数据绑定,包括双向绑定、单向绑定以及动态数据绑定。以下是几种常见的实现方式: 双向数据绑定(v-model) 双向数据绑定通常用于表单元…