vue-router基础内容

const router = new VueRouter({

routes // (缩写)相当于 routes: routes

})

vue实例注入路由


通过 router 配置参数注入路由。

var app = new Vue({

el: ‘#app’,

router: router,

})

通过注入路由器,我们可以在任何组件内通过 this. r o u t e r 访问路由器,也可以通过 t h i s . router 访问路由器,也可以通过 this. router访问路由器,也可以通过this.route 访问当前路由。

使用路由出口


路由跳转


router-link

通过router-link组件,我们可以进行路由的跳转。to属性的写法很多,请参考router-link

Component B

Component C

编程式路由

router.push(location, onComplete?, onAbort?)

该方法的参数location可以是一个字符串路径,或者一个描述地址的对象。用法如下:

router.push(‘b’);

router.push({path: ‘b’})

router.push({path: ‘user/1’})

router.push({name: ‘user’, params: {id: 1}})

router.replace(location, onComplete?, onAbort?)

跟 router.push 很像,唯一的不同就是,它不会向 history 添加新记录,而是跟它的方法名一样 —— 替换掉当前的 history 记录。

router.replace(…)

ps:你也可以在router-link使用replace。

router.go(n)

类似 window.history.go(n)。是history回退和前进的操作。

了解了上述几个点后,你基本上可以完成基本的路由功能了。

嵌套路由


一个组件内部也可以有路由视图router-view。

FatherComponent Content

于此同时需要在路由定义处添加children属性。也是类似嵌套的写法。

{

path: ‘/father’,

component: FatherComponent,

children: [

{ path: ‘child’, component: ChildComponent }

]

}

命名视图


当我们的布局是由几部分组成时,并且我们希望每一部分都有自己的路由,那么此时就不是嵌套路由了,而是多路由视图,这个时候我们就需要用到命名视图了。

而在定义路由的时候也要对应好。

const router = new VueRouter({

routes: [

{

path: ‘/’,

components: {

default: Foo,

a: Bar,

b: Baz

}

}

]

})

用watch监测路由


很多时候我们可能需要监测路由变化,那么需要在watch中监测’ r o u t e ’,方法大体是’ route’,方法大体是’ route,方法大体是route’ (to, from) {your code}

watch: {

‘$route’: function (to, from) {

this.fromRoute = from.path;

this.toRoute = to.path;

// 可以根据情况做一些后续的逻辑处理

}

}

路由重定向


重定向的意思就是本来是要跳路由A的,但是定向到B。写法如下:

routes: [

{ path: ‘/b’, component: ComponentB },

// redirect为path的形式

{ path: ‘/a’, redirect: ‘/b’ },

// redirect为name的形式

{ path: ‘/a’, redirect: { name: ‘compB’} },

// 甚至是一个方法,动态返回重定向目标,这样我感觉都可以做路由守卫了。

{ path: ‘/a’, redirect: to => {

// 方法接收 目标路由 作为参数

// return 重定向的 字符串路径/路径对象

}}

]

路由别名


routes: [

{ path: ‘/a’, component: A, alias: ‘/b’ }

]

alias的意思是别名,通俗讲,你大名是张三,别人叫你阿三,你也答应了,阿三就是你的别名。反映到路由上就是说,b是a的别名,那我输入路由b,地址栏会显示b,但也会映射到A组件;如果输入a,那地址栏就还是a,组件也是A,没什么变化。

向路由组件传递props


在组件中使用 $route 会使之与其对应路由形成高度耦合,我们可以使用props的形式来重新定义。这样id就会作为一个prop属性,用来接收传递的数据。

react和vue的比较

相同
1)vitual dom
2)组件化
3)props,单一数据流

不同点
1)react是jsx和模板;(jsx可以进行更多的js逻辑和操作)
2)状态管理(react)
3)对象属性(vue)
4)vue:view——medol之间双向绑定
5)vue:组件之间的通信(props,callback,emit)

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

e 会使之与其对应路由形成高度耦合,我们可以使用props的形式来重新定义。这样id就会作为一个prop属性,用来接收传递的数据。

react和vue的比较

相同
1)vitual dom
2)组件化
3)props,单一数据流

不同点
1)react是jsx和模板;(jsx可以进行更多的js逻辑和操作)
2)状态管理(react)
3)对象属性(vue)
4)vue:view——medol之间双向绑定
5)vue:组件之间的通信(props,callback,emit)

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

[外链图片转存中…(img-6wKwKofO-1714337886230)]

  • 28
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值