Vue学习之旅Part10:在Vue中通过vue-router实现路由嵌套

随着Vue单页应用(SPA)变得复杂 需要使用路由嵌套
路由嵌套允许更复杂的用户界面以及相互嵌套的组件

如果对Vue的路由不太熟悉 请参看我的另一篇博客:Vue学习之旅Part9:使用vue-router实现前端路由和参数传递

路由嵌套 即路由的组件内部还有子组件 适用于很多业务场景

实现路由嵌套的步骤比较简单

首先 在路由对象里定义子路由:

子路由的path命名需注意:子路由的path路径前面不能加斜杠
子路由的path前面会自动拼上父路由的path

<script>
    // 定义组件模板对象
    var account={
        template:"#tmpl"
    }
    var login={
        template:"

登录

"
} var register={ template:"

注册

"
} // 路由对象 var router=new VueRouter({ routes:[ { path:"/account", component:account, // 子路由 children:[ // 子路由的path前面不能加斜杠 path前面会自动拼上父路由的path {path:"login",component:login}, // /account/login {path:"register",component:register} // /account/register ] } ] }) var vm=new Vue({ el:'#app', data:{}, methods:{}, // 挂载路由对象 router });
script>

然后 定义组件:

不仅要在Vue实例的管理区放置一个 还需在组件内部放置一个 实现路由的嵌套
组件内部的显示的是子组件的内容

拿下方的例子来说:

<router-link to="/account/login">登录router-link>

当点击登录标签之后 vue-router匹配到路径为/account的路由对象内部的路径为login的子路由时
组件内的将会显示出预先定义({path:"login",component:login})的login组件

/account/login代表的是 路由/account里的login
两个path拼接而成


<template id="tmpl">
	<div>
		<h1>账户管理h1>
		
		<router-link to="/account/login">登录router-link>
		<router-link to="/account/register">注册router-link>
		
		
		<router-view>router-view>
	div>
template>



<div id="app">
	<router-link to="/account">前往账户管理router-link>

	
	<router-view>router-view>
div>

你可能感兴趣的:(前端)