Vue3 + Vue Router 4完整示例代码(可直接运行)

 更新时间:2026年06月22日 09:44:12   作者:学以智用  
vue-router是Vue.js官方的路由插件,它和vue.js是深度集成的,适合用于构建单页面应用,这篇文章主要介绍了Vue3+Vue Router4完整示例的相关资料,需要的朋友可以参考下

我给你最完整、最标准、可直接复制运行的 Vue3 路由全套示例,包含: ✅ 路由配置

  • ✅ 页面跳转
  • ✅ 路由传参
  • ✅ 动态路由
  • ✅ 嵌套路由(子路由)
  • ✅ 404 页面
  • ✅ 路由守卫(登录拦截)
  • ✅ 组合式 API 完整用法

一、项目结构(照着建)

src/
├── router/
│   └── index.js       # 路由配置
├── views/             # 页面组件
│   ├── Home.vue
│   ├── About.vue
│   ├── User.vue
│   ├── Login.vue
│   ├── NotFound.vue
│   └── Dashboard/     # 嵌套路由文件夹
│       ├── Dashboard.vue
│       ├── Profile.vue
│       └── Order.vue
├── App.vue
└── main.js

二、安装路由

npm install vue-router@4

三、完整代码(直接复制)

1. 路由配置:src/router/index.js

import { createRouter, createWebHistory } from 'vue-router'

// 导入页面
import Home from '../views/Home.vue'
import Login from '../views/Login.vue'
import NotFound from '../views/NotFound.vue'

// 路由规则
const routes = [
  {
    path: '/',
    name: 'Home',
    component: Home,
    meta: { requiresAuth: true } // 需要登录才能访问
  },
  {
    path: '/about',
    name: 'About',
    component: () => import('../views/About.vue') // 懒加载
  },
  {
    path: '/user/:id', // 动态路由
    name: 'User',
    component: () => import('../views/User.vue')
  },
  {
    path: '/login',
    component: Login
  },
  // 嵌套路由示例
  {
    path: '/dashboard',
    component: () => import('../views/Dashboard/Dashboard.vue'),
    meta: { requiresAuth: true },
    children: [
      { path: 'profile', component: () => import('../views/Dashboard/Profile.vue') },
      { path: 'order', component: () => import('../views/Dashboard/Order.vue') }
    ]
  },
  // 404 页面
  {
    path: '/:pathMatch(.*)*',
    component: NotFound
  }
]

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

// 路由守卫(登录验证)
router.beforeEach((to, from, next) => {
  const isLogin = localStorage.getItem('token') // 模拟登录状态

  if (to.meta.requiresAuth && !isLogin) {
    next('/login') // 未登录,跳转到登录页
  } else {
    next() // 放行
  }
})

export default router

2. 挂载路由:src/main.js

import { createApp } from 'vue'
import App from './App.vue'
import router from './router' // 导入路由

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

3. 根组件:App.vue

<template>
  <nav>
    <router-link to="/">首页</router-link> |
    <router-link to="/about">关于</router-link> |
    <router-link to="/user/1001">用户 1001</router-link> |
    <router-link to="/dashboard">控制台</router-link> |
    <router-link to="/login">登录</router-link>
  </nav>

  <div style="padding: 20px;">
    <router-view></router-view> <!-- 页面出口 -->
  </div>
</template>

四、页面组件代码

Home.vue(首页)

<template>
  <h2>首页(需要登录)</h2>
  <button @click="goToAbout">跳转到关于页</button>
</template>

<script setup>
import { useRouter } from 'vue-router'
const router = useRouter()

const goToAbout = () => {
  router.push('/about')
}
</script>

About.vue(关于页)

<template>
  <h2>关于页</h2>
  <p>当前路径:{{ route.path }}</p>
  <button @click="back">返回</button>
</template>

<script setup>
import { useRouter, useRoute } from 'vue-router'
const router = useRouter()
const route = useRoute()

const back = () => {
  router.go(-1)
}
</script>

User.vue(动态路由)

<template>
  <h2>用户页</h2>
  <p>用户 ID:{{ route.params.id }}</p>
</template>

<script setup>
import { useRoute } from 'vue-router'
const route = useRoute()
</script>

Login.vue(登录页)

<template>
  <h2>登录页</h2>
  <button @click="login">登录</button>
</template>

<script setup>
import { useRouter } from 'vue-router'
const router = useRouter()

const login = () => {
  localStorage.setItem('token', '123456') // 模拟登录
  router.push('/') // 跳回首页
}
</script>

Dashboard.vue(嵌套父路由)

<template>
  <h2>控制台</h2>
  <router-link to="/dashboard/profile">个人资料</router-link> |
  <router-link to="/dashboard/order">订单</router-link>
  <router-view></router-view>
</template>

Profile.vue + Order.vue(子页面)

<!-- Profile.vue -->
<template><h4>个人资料</h4></template>
<!-- Order.vue -->
<template><h4>订单页面</h4></template>

NotFound.vue

<template>
  <h2>404 页面不存在</h2>
</template>

五、运行项目

npm run dev

六、这个示例包含的所有功能

  1. 基础路由/ /about
  2. 动态路由/user/1001
  3. 嵌套路由/dashboard/profile
  4. 路由懒加载:优化性能
  5. 路由守卫:登录权限控制
  6. 404 页面
  7. 组合式 APIuseRouter useRoute
  8. 声明式导航 + 编程式导航

总结

这是企业级标准 Vue3 路由完整示例直接复制即可运行,包含你开发项目会用到的 99% 路由功能。

到此这篇关于Vue3 + Vue Router 4完整示例代码的文章就介绍到这了,更多相关Vue Router4运行代码内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 基于vue实现web端超大数据量表格的卡顿解决

    基于vue实现web端超大数据量表格的卡顿解决

    这篇文章主要介绍了基于vue实现web端超大数据量表格的卡顿解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • 利用VUE框架,实现列表分页功能示例代码

    利用VUE框架,实现列表分页功能示例代码

    本篇文章主要介绍了利用VUE框架,实现列表分页功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-01-01
  • Vue事件处理中的上下文问题:原因与解决过程

    Vue事件处理中的上下文问题:原因与解决过程

    本文将探讨 Vue 事件处理中常见的上下文问题及其解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-03-03
  • 详解vuex的简单todolist例子

    详解vuex的简单todolist例子

    这篇文章主要介绍了详解vuex的简单todolist例子,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • Vue在echarts tooltip中添加点击事件案例详解

    Vue在echarts tooltip中添加点击事件案例详解

    本文主要介绍了Vue项目中在echarts tooltip添加点击事件的案例详解,代码具有一定的价值,感兴趣的小伙伴可以来学习一下
    2021-11-11
  • vue的路由动画切换页面无法读取meta值的bug记录

    vue的路由动画切换页面无法读取meta值的bug记录

    这篇文章主要介绍了vue的路由动画切换页面无法读取meta值的bug记录,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • 10个Vue3中常用的组合式 API用法详解

    10个Vue3中常用的组合式 API用法详解

    通过Vue 3,组合式API增强了我们利用Vue的能力,使我们的代码更具模块性和可读性,本文主要来和大家分享10个常用的Vue3组合式API,希望对大家有所帮助
    2024-01-01
  • Vue数组添加元素的三种实现方式

    Vue数组添加元素的三种实现方式

    这篇文章主要介绍了Vue数组添加元素的三种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-09-09
  • 使用Vant如何完成各种Toast提示框

    使用Vant如何完成各种Toast提示框

    这篇文章主要介绍了使用Vant如何完成各种Toast提示框,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • ElementUI的this.$notify.close()调用不起作用的解决

    ElementUI的this.$notify.close()调用不起作用的解决

    本文主要介绍了ElementUI的this.$notify.close()调用不起作用的解决,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08

最新评论