普通跳转
不带参数跳转
1 | <router-link to="/login" class="style">go to login page</router-link> |
v-link
指令已废弃。现在使用的<router-link>
标签代替。
动态路由匹配
以下是声明式导航。
params
1 | <router-link :to="{name: 'login' ,params:{username: username}}" class="style">(parmas) go to login page</router-link> |
query
1 | <router-link :to="{name: 'login' ,query:{username: username}}" class="style">(query) go to login page</router-link> |
编程式导航
除了使用<router-link>
创建a标签来定义导航链接,我们还可以结束router的实例方法,通过编写代码来实现。
router.push(location,onComplete?,onAbort?)
在vue实例内部,可以通过$router
访问路由实例,因此可以调用this.$router.push
。想要导航到不同的url,则使用router.push
方法。这个方法会向history栈添加一个新纪录。所以,当用户点击浏览器后退按钮时,则回到之前的url。
当点击<router-link>
时,这个方法会在内部调用,所以说,点击<router-link :to="url">
等同于调用router.push(url)
。
声明式 | 编程式 |
---|---|
<router-link :to="url"> |
router.push(url) |
因此上面编程式导航的例子可以用另一种方式等价替换。
params
1 | <button @click="loginPage()" class="style">go to login</button> |
query
1 | <button @click="loginPage()" class="style">go to login</button> |
query与params
query
是正常的get
请求的参数传递。举个例子:
1 | http://127.0.0.1:8080/?username=wzb |
这个url中,query
是指username=wzb
,转化为json就是{username: wzb}
。
params
是restful
中的参数,可以理解为后台的参数。很多路由都支持这样的格式,比如express:
1 | var express = require('express') |
当请求/login/wzb
时,路由就会匹配到上面的方法。其中params
就是指上面的username
。转化为json就是{username:wzb}
。