浅谈VUE的路由管理

举报
运气男孩 发表于 2021/01/28 00:38:06 2021/01/28
【摘要】 Vue的路由什么是路由?在我们生活中的路由,一句话概括就是:数据从一个网络到另一个网络就是靠路由器来完成的,而在程序开发中的路由不是指路由器和网络协议中的路由,但是基本思想是一样的。而路由又分为前端路由和后端路由,就不细说了。Vue Router 是 Vue.js 官方的路由管理器。它和 Vue.js 的核心深度集成,让构建单页面应用变得易如反掌。路由实际上就是可以理解为指向,就是我在页面上...

Vue的路由

什么是路由?

在我们生活中的路由,一句话概括就是:数据从一个网络到另一个网络就是靠路由器来完成的,而在程序开发中的路由不是指路由器和网络协议中的路由,但是基本思想是一样的。而路由又分为前端路由和后端路由,就不细说了。

Vue Router 是 Vue.js 官方的路由管理器。它和 Vue.js 的核心深度集成,让构建单页面应用变得易如反掌。路由实际上就是可以理解为指向,就是我在页面上点击一个按钮需要跳转到对应的页面,这就是路由跳转;

作用:简单来说,用来定义页面跳转与模块之前的关系,看下图结果

image.png

vue路由基础使用

<!-- 使用 router-link 组件来导航. -->  
  <!-- 通过传入 `to` 属性指定链接. --> 
   <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->  
  <router-link to="/Hauwei">Go to Huawei</router-link>   
 <router-link to="/cloud">Go to Cloud</router-link>

Vue.use(Router);
const Hello => import( './hello.vue'):
export default new Router({
routes: [
{ path: './hello',component: Hello,},
],
},);


	
naClick(){
this.$router.push( " /detail");
}

动态路由

vue.use(Router);
const Hello = () =>import( "./hello.vue" );export default new Router({
routes: [
path: "/hello/$id ', component: Hello},
],
},);

动态路由是什么?
一般我们使用vue-router配置路由时,都是直接配置固定的路径,而动态路由是我们可以在 vue-router 的路由路径中使用“动态路径参数”,让路径不再是固定的。

this.$router.push('/cart')//官方介绍:也可以通过对象的形式携带参数

router.push('home')// 字符串

router.push({ path: 'home' })// 对象

router.push({ name: 'user', params: { userId: '123' }})/ / 命名的路由

router.push({ path: 'register', query: { plan: 'private' }}) // 带查询参数,变成 /register?plan=private

获取参数

this.$route.params

this.$route.query

重定向

routes: [
{
path:'*',
redirect: "/hello" ,
},
]

路由的两种模式

>hash(默认)

>history

const router = new VueRouter({mode: 'history ' ,routes: [...]})

路由导航守卫

全局守卫

  • 前置守卫: beforeEach,一般用于路由进入前进行操作〉解析守卫: beforeResolve

  • 后置守卫: afterEach,一般用于路由进入后进行操作

路由独享守卫

  • beforeEnter:单个路由进入后调用

组件守卫

  • beforeRou**ter:路由被确认前调用

  • beforeRouteUpdate:路由改变,组件刷新时调用> beforeRouteLeave:离开路由时调用

完整的导航解析流程

1.导航被触发。

2.在失活的组件里调用beforeRouteLeave守卫。

3.调用全局的beforeEach守卫。

4.在重用的组件里调用beforeRouteUpdate守卫(2.2+)。5

.在路由配置里调用beforeEnter 。

6.解析异步路由组件。

7.在被激活的组件里调用beforeRou**ter 。

8.调用全局的beforeResolve守卫(2.5+)。

9.导航被确认。

10.调用全局的afterEach钩子。

11.触发DOM更新。

12.用创建好的实例调用beforeRou**ter守卫中传给next的回调函数。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。