当前位置: 首页 > news >正文

Vue-Router 基础使用

Vue Router 是 Vue 官方的客户端路由解决方案。

客户端路由的作用是在单页应用 SPA 中将浏览器的 URL 和用户看到的内容绑定起来。当用户在应用中浏览不同页面时,URL 会随之更新,但页面不需要从服务器重新加载。

Vue Router 基于 Vue 的组件系统构建,你可以通过配置路由来告诉 Vue Router 为每个 URL 路径显示哪些组件。

1. 基础入门原理与示例

1.1. 初识Vue-Router

Vue-Router 是 Vue.js 官方的路由管理器,它能够创建单页应用 SPA,通过在应用中创建不同的视图和路径。

1.2. 安装与配置

使用npm安装: npm install vue-router

配置Vue-Router:

import Vue from 'vue';
import Home from './views/Home.vue';
import About from './views/About.vue';Vue.use(router);const routes = [{ path: '/', component: Home },{ path: '/about', component: About }
];const router = new VueRouter({routes
});new Vue({router,render: h => h(App)
}).$mount('#app');

1.3. 基本示例

创建两个简单的组件并设置路由。

在Vue实例中使用 <router-view> 来显示路由对应的组件。

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

我们还可以在组件中通过访问实例,使用方法进行路由跳转。

export default {methods: {goToAbout() {this.$router.push('/about')},},
}

如果是 Composition API,则可以使用如下方法。

<script setup>
import { computed } from 'vue'
import { useRoute, useRouter } from 'vue-router'const router = useRouter()
const route = useRoute()const search = computed({get() {return route.query.search},set(search) {router.replace({ query: { search } })}
});
</script>

2. 动态路由

很多时候,我们需要将给定匹配模式的路由映射到同一个组件。例如,我们可能有一个 User 组件,它应该对所有用户进行渲染,但用户 ID 不同。在 Vue Router 中,我们可以在路径中使用一个动态字段来实现,我们称之为 路径参数:

import User from './User.vue'
// 这些都会传递给 `createRouter`
const routes = [// 动态字段以冒号开始{ path: '/users/:id', component: User },
]

现在像 /users/1 和 /users/2 这样的 URL 都会映射到同一个路由。

路径参数用冒号:表示。当一个路由被匹配时,它的 params 的值将在每个组件中以 route.params 的形式暴露出来。因此,我们可以通过更新 User 的模板来呈现当前的用户 ID。

<template><div><!-- 当前路由可以通过 $route 在模板中访问 -->User {{ $route.params.id }} </div>
</template>

2.1. 获取路由参数

获取路由参数的方式有几种,通常我们分为模板中获取和 JavaScript 逻辑中获取,分别为:

1. 在模板中消费参数

const User = {template: '<div>User {{ $route.params.id }}</div>'
};

2. 在 JavaScript 中使用参数

<script setup>import { watch } from 'vue'import { useRoute } from 'vue-router'const route = useRoute()watch(() => route.params.id, (newId, oldId) => {// 对路由变化做出响应...}
</script>

2.2. 捕获所有路由或404 Not found 路由

常规参数只匹配 url 片段之间的字符,用 / 分隔。如果我们想匹配任意路径,我们可以使用自定义的 路径参数 正则表达式,在 路径参数 后面的括号中加入 正则表达式:

const routes = [// 将匹配所有内容并将其放在 `route.params.pathMatch` 下{ path: '/:pathMatch(.*)*', name: 'NotFound', component: NotFound },// 将匹配以 `/user-` 开头的所有内容,并将其放在 `route.params.afterUser` 下{ path: '/user-:afterUser(.*)', component: UserGeneric },
]

3. 路由嵌套

一些应用程序的 UI 由多层嵌套的组件组成。在这种情况下,URL 的片段通常对应于特定的嵌套组件结构,例如:

3.1. 配置嵌套路由

配置子路由如下:

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

3.2. 使用嵌套路由组件

在父组件中使用 <router-view> 来显示子路由组件。

<div><h2>User {{ $route.params.id }}</h2><router-link to="profile">Profile</router-link><router-link to="posts">Posts</router-link><router-view></router-view>
</div>

3.3. 嵌套路由命名

嵌套路由可以进行命名,方便在后续使用中管理。

const routes = [{path: '/user/:id',component: User,// 请注意,只有子路由具有名称children: [{ path: '', name: 'user', component: UserHome }],},
]

4. 路由跳转

路由的跳转方式有很多种,总结如下:

RouterLink:

<RouterLink to="/about">Go to About</RouterLink>

实例方法跳转:

export default {methods: {goToAbout() {this.$router.push('/about')},},
}

Composition API:

<script setup>import { computed } from 'vue'import { useRoute, useRouter } from 'vue-router'const router = useRouter()router.push('/about')// 命名的路由,并加上参数,让路由建立 urlrouter.push({ name: 'user', params: { username: 'eduardo' } })router.go(1)
</script>

相关文章:

  • 2.2.1 05年T4
  • 设备制造行业项目管理难点解析,如何有效解决?
  • Vue-05(自定义事件)
  • 【五模型时间序列预测对比】Transformer-LSTM、Transformer、CNN-LSTM、LSTM、CNN
  • wails3学习-打包(wails3 package)
  • Nginx版本平滑迁移方案
  • 26考研 | 王道 | 第六章 应用层
  • 第7讲、Odoo 18 源码深度分析
  • 共享内存(SharedArrayBuffer)的使用,以及兼容性情况
  • 13.多线程通关秘籍:用售票系统讲透 Java 线程创建与 synchronized 锁魔法
  • 移动零 - 简单
  • Java基础 Day24
  • 闲鱼到淘宝商品同步的技术实现原理与局限
  • 5.29 打卡
  • MCP(模型上下文协议)深度解析:一篇文章彻底理解
  • AI新手入门解锁元生代MaaS平台:API工作流调用全攻略
  • DMBOK对比知识点对比(1)
  • 关系型数据库与非关系型数据库的区别
  • 涂鸦智能的TuyaOpen框架入门指南:智能插座实战
  • Vue 组件 - 指令
  • 旅游景点网站设计/引流平台有哪些
  • 淮安做网站的公司/韩国seocaso
  • 网站建设实例教程/怎么在百度上做网站
  • 玉树商城网站建设/高级搜索引擎技巧
  • 响应式网站模板怎么做/建站模板平台
  • 深圳建站公司一般需要多久/电子商务营销的概念