在 Vue 中,Vue 路由(vue-router) 可以通过 children 属性来实现路由的嵌套。
<body>
<div id="app">
<router-link to="/account">Account</router-link>
<router-view></router-view>
</div>
<template id="temp1">
<div>
<h1>这是 Account 组件</h1>
<router-link to="/account/login">登录</router-link>
<router-link to="/account/register">注册</router-link>
<router-view></router-view>
</div>
</template>
</body>
<script type="text/javascript">
var account = {
template: '#temp1'
}
var login = {
template: '<h3>登录</h3>'
}
var register = {
template: '<h3>注册</h3>'
}
var routerObj = new VueRouter({
routes: [
{
path: "/account",
component: account,
//使用 children 设置子路由,同时,子路由的 path 前面 不需要加 /
children: [
{path:'login', component: login},
{path:'register', component: register}
]
},
]
})
</script>
首先,我们在定义 VueRouter 对象时,通过 children 属性,设置路由子路由,这里设置了路由 account 下面包含两个子路由,分别为 login 和 register。
子路由的 path 属性,不能以 / 开始,因为如果以 / 开始,那么子路由就不是从 /account 开始了。接着,我们需要在父组件对象里面通过 /父路由/子路由 的形式,实现子路由。
最后,我们需要在父组件对象里面通过 router-view 标签,设置子路由的占位符。
使用 children 属性,设置子路由
<!DOCTYPE html>
<html>
<head>
<title>Vue路由(vue-router children)路由嵌套</title>
<script type="text/javascript" src="./lib/vue-2.6.10.min.js"></script>
<script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
</head>
<body>
<div id="app">
<router-link to="/account">Account</router-link>
<router-view></router-view>
</div>
<template id="temp1">
<div>
<h1>这是 Account 组件</h1>
<router-link to="/account/login">登录</router-link>
<router-link to="/account/register">注册</router-link>
<router-view></router-view>
</div>
</template>
<p>嗨客网(www.haicoder.net)</p>
</body>
<script type="text/javascript">
var account = {
template: '#temp1'
}
var login = {
template: '<h3>登录</h3>'
}
var register = {
template: '<h3>注册</h3>'
}
var routerObj = new VueRouter({
routes: [
{
path: "/account",
component: account,
//使用 children 设置子路由,同时,子路由的 path 前面 不需要加 /
children: [
{path:'login', component: login},
{path:'register', component: register}
]
},
]
})
var vm = new Vue({
el : '#app',
data:{
msg: "嗨客网"
},
router: routerObj
});
</script>
</html>
程序运行后,浏览器显示效果如下:
我们设置了 account 路由下面包含两个子路由,分别为 login 路由和 account 路由。
在 Vue 中,Vue 路由(vue-router) 可以通过 children 属性来实现路由的嵌套。