Vue 3 路由教程

Vue 3 路由教程

1. 路由基础概念

1.1 什么是路由?

路由是现代单页面应用(SPA)中管理页面导航的核心机制。在Vue 3中,我们主要使用vue-router库来实现路由功能。路由允许您在应用程序中无需重新加载整个页面就可以动态切换视图。

1.2 安装vue-router

使用npm安装vue-router:

bash 复制代码
npm install vue-router@4

2. 基本路由配置

2.1 创建路由实例

javascript 复制代码
import { createRouter, createWebHistory } from 'vue-router'
import Home from './components/Home.vue'
import About from './components/About.vue'

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

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

export default router

2.2 在main.js中注册路由

javascript 复制代码
import { createApp } from 'vue'
import App from './App.vue'
import router from './router'

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

3. 路由跳转方法

3.1 声明式导航

在模板中使用<router-link>

html 复制代码
<router-link to="/">首页</router-link>
<router-link to="/about">关于</router-link>

3.2 编程式导航

在组件的方法中使用router.push()

javascript 复制代码
// 字符串路径
this.$router.push('/about')

// 对象形式
this.$router.push({ path: '/about' })

// 带参数
this.$router.push({ 
  path: '/user', 
  query: { id: 123 } 
})

4. 路由传参

4.1 动态路由

javascript 复制代码
const routes = [
  // 动态路由参数
  { path: '/user/:id', component: User }
]

// 在组件中获取参数
const route = useRoute()
const userId = route.params.id

4.2 查询参数

javascript 复制代码
// 传递查询参数
this.$router.push({ 
  path: '/search', 
  query: { keyword: 'vue' } 
})

// 获取查询参数
const keyword = route.query.keyword

5. 高级路由技巧

5.1 嵌套路由

javascript 复制代码
const routes = [
  {
    path: '/user',
    component: User,
    children: [
      { path: 'profile', component: UserProfile },
      { path: 'posts', component: UserPosts }
    ]
  }
]

5.2 命名视图

javascript 复制代码
const routes = [
  {
    path: '/',
    components: {
      default: Home,
      sidebar: Sidebar,
      content: MainContent
    }
  }
]

5.3 路由守卫

javascript 复制代码
router.beforeEach((to, from, next) => {
  // 全局前置守卫
  if (to.meta.requiresAuth) {
    // 检查登录状态
    if (!isAuthenticated()) {
      next('/login')
    } else {
      next()
    }
  } else {
    next()
  }
})

6. 常见问题与最佳实践

6.1 处理404页面

javascript 复制代码
const routes = [
  // 其他路由...
  { 
    path: '/:pathMatch(.*)*', 
    name: 'NotFound', 
    component: NotFound 
  }
]

6.2 路由懒加载

javascript 复制代码
const routes = [
  { 
    path: '/about', 
    component: () => import('./components/About.vue') 
  }
]

结语

Vue 3路由提供了强大且灵活的导航机制。通过合理使用路由,您可以创建更加动态和用户友好的单页面应用。

相关推荐
paopaokaka_luck20 小时前
心理咨询管理系统(WebSocket实时沟通、基于用户的协同过滤、 ECharts多维分析、 预约业务流程、预约校验与定时处理)
java·vue.js·spring boot·mysql·spring·echarts·1024程序员节
漫天转悠1 天前
Vue3白屏排查实录-Transition与多根模板
vue.js·1024程序员节
jason.zeng@15022071 天前
Nginx 配置详解(静态 HTML、下载目录、API 反向代理三套场景)
java·vue.js·1024程序员节
Bug收容所1 天前
Vue+JS Day3
前端·javascript·vue.js·前端框架·1024程序员节
用户83134859306982 天前
Vue3 v-for:常用用法与开发高频坑点
前端·javascript·vue.js
林恒smileZAZ2 天前
用 Vue 3 + Electron 做桌宠:从启动退出到拖拽、单击与鼠标穿透
vue.js·electron·计算机外设
软件技术NINI2 天前
基于JavaWeb 汽车租聘
java·vue.js·spring boot·后端·python·毕业设计·毕设
2301_32241428043 天前
基于SpringBoot+Vue的休闲零食超市管理系统的设计与实现59004-计算机毕设 原创(免费领源码+部署教程+开发环境)
java·vue.js·spring boot·redis·mysql·决策树·推荐算法
酷炫码神3 天前
Day 8|Vue3 响应式:告别手动操作 DOM,让数据驱动界面
javascript·vue.js·ecmascript
星光不问赶路人3 天前
Vue 3 对象监听与快照:ref 和 reactive 的关键差异
前端·vue.js