路由
Last updated
Was this helpful?
Last updated
Was this helpful?
Was this helpful?
vue-route 官方文档(https://router.vuejs.org/zh/)
*安装
npm i vue-router -s
使用哈希进行跳转
www.github.com#/login
定义路由对象
路由对象中有一个routes路由数组,内部定义了指向的链接和对应的组件
const User = {
template: '<div>User</div>'
}
const router = new VueRouter({
routes: [
{ path: '/user',
Vue实例挂载路由对象
var app=new Vue({
el:"#app",
data:{
a:"aaa"
},
router:router
})
在html中指定显示的位置
<div id="app">
<router-view></router-view>
</div>
`</router-link>
const router = new VueRouter({
routes: [
{path:"",redirect:"/user"}, //访问首页。相当于访问/user
{ path: '/user', component: User }]
})
获取下一级链接
在定义路由时留下一个空位 path: /route/:sdadsa
在组件中使用该字符$route.params.sdadsa
获取get参数,相比前面的就更简单了,之间使用route属性中的query就可以了
//路由路径
#/dsadsa?aaa=dsaddas
console.log(this.$route.query.aaa)
/user/profile /user/posts
+------------------+ +-----------------+
| User | | User |
| +--------------+ | | +-------------+ |
| | Profile | | +------------> | | Posts | |
| | | | | | | |
| +--------------+ | | +-------------+ |
+------------------+ +-----------------+
当访问 / 时提供<router-view>
渲染User内容
在User组件模板中继续渲染下级路由组件
template: `<div>HOME
<router-link to="/account/login">deng</router-link>
<router-link to="/account/register">register</router-link>
<router-view></router-view>
</div>`
在路由中声明下级路由的路径和组件
routes: [
{
path:"/User",
component:HOME,
children: [
{
// 当 /user/login匹配成功,
// login 会被渲染在 User 的 <router-view> 中
path: 'login',
component: login
},
{
path: 'register',
component: register
}
]}
]
例如实现经典的布局
在父组件中注册3个路由视图,同时在父路由中声明多个子路由,在route-view标签上使用name属性就可以实现三个子路由的分配