Vue中路由嵌套(子路由)

野性酷女 2022-12-25 15:56 356阅读 0赞

路由的嵌套就是点击一个路由地址后,继续点击,进入到另外一个路由地址下,即第二个路由就是第一个路由的子路由。
根据我们前面学习的VueRouter的知识,可以直接写出代码来实现:

一般写法

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Document</title>
  7. <script src="./lib/vue-2.4.0.js"></script>
  8. <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
  9. </head>
  10. <body>
  11. <div id="app">
  12. <router-link to="/account">account</router-link>
  13. <router-view></router-view>
  14. </div>
  15. <template id="temp">
  16. <div>
  17. <h1>Account组件</h1>
  18. <router-link to="/account/login">登录</router-link>
  19. </div>
  20. </template>
  21. <script> var account = { template:'#temp', } var router = new VueRouter({ routes:[ { path:'/account',component:account}, ] }) new Vue({ el:'#app', data:{ }, methods: { }, router }) </script>
  22. </body>
  23. </html>

点击account—路由跳转到/account下:
在这里插入图片描述
在这里插入图片描述
再点击登录,跳转至/account/login
在这里插入图片描述

改进写法

我们发现login路由是account路由下的一个子路由,形成了一个父子组件路由。VueRouter提供给我们一个属性== children ==来是实现路由的嵌套:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Document</title>
  7. <script src="./lib/vue-2.4.0.js"></script>
  8. <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
  9. </head>
  10. <body>
  11. <div id="app">
  12. <router-link to="/account">account</router-link>
  13. <router-view></router-view>
  14. </div>
  15. <template id="temp">
  16. <div>
  17. <h1>这是Account组件</h1>
  18. <router-link to="/account/login">登录</router-link>
  19. <router-link to="/account/register">注册</router-link>
  20. <router-view></router-view>
  21. </div>
  22. </template>
  23. <script> var account={ template:'#temp' } var login={ template:'<h1>登录的组件显示</h1>' } var register={ template:'<h1>注册的组件显示</h1>' } var router=new VueRouter({ routes: [ { path:'/account', component:account, children:[ { path:'login',component:login}, { path:'register',component:register} ] }, ] }) var vm=new Vue({ el:'#app', data:{ }, methods: { }, router }) </script>
  24. </body>
  25. </html>

点击account,跳转到子路由login中:
在这里插入图片描述
在这里插入图片描述
再分别点击子路由,进入到子路由下:
在这里插入图片描述

注意

使用children属性实现子路由时,子路由path前面 不能带/,以/ 开头的嵌套路径会被当作根路径否则会永远以根路由开始请求, 这样不方便我们调用渲染数据

应用— 实现一个经典布局

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Document</title>
  7. <script src="lib/vue-2.4.0.js"></script>
  8. <script src="lib/vue-router-3.0.1.js"></script>
  9. <style> html,body{ margin: 0; padding: 0; } .header{ background-color: orange; height:80px; } h1{ margin: 0; padding: 0; font-size: 16px; } .container{ display: flex; height: 600px; } .left{ background-color: lightgreen; flex: 2; } .main{ flex: 8; background-color: lightpink; } </style>
  10. </head>
  11. <body>
  12. <div id="app">
  13. <router-view></router-view>
  14. <div class="container">
  15. <router-view name="left"></router-view>
  16. <router-view name="main"></router-view>
  17. </div>
  18. </div>
  19. <script> var header={ template:'<h1 class="header">Header头部区域</h1>' } var leftBox={ template:'<h1 class="left">Left侧边栏区域</h1>' } var mainBox={ template:'<h1 class="main">mainBox主体内容</h1>' } var router=new VueRouter({ routes: [ { path:'/', components:{ 'default':header, 'left':leftBox, 'main':mainBox } } ] }) var vm=new Vue({ el:'#app', data:{ }, methods: { }, router }) </script>
  20. </body>
  21. </html>

在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,356人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Vue 嵌套

    文章目录 嵌套路由 具体实现 嵌套路由 说白了就是选项卡中又嵌套一个选项卡。 可以看看官方的例子 [传送门][Link 1] 具体

    相关 Vue嵌套

    路由的嵌套就是点击一个路由地址后,继续点击,进入到另外一个路由地址下,即第二个路由就是第一个路由的子路由。 根据我们前面学习的VueRouter的知识,可以直接写出代码来实