zoukankan      html  css  js  c++  java
  • vue中路由嵌套的作用

    vue中为什么要有路由嵌套啊,一般的路由不就行了吗?我们可以看一个很简单的例子,页面效果是这样的:

    html文件:

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Document</title>
      <script src="https://unpkg.com/vue/dist/vue.js"></script>
      <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
    </head>
    
    <body>
      <div id="app">
        <router-link to="/user">父组件1</router-link>
        <router-link to="/register">父组件2</router-link>
        <router-view></router-view>
      </div>
    
      <script>
        // 父组件1
        let user = {
          template: `<h1>user</h1>`
        }
    
        // 父组件2
        let register = {
          template: `
                    <div>
                      <router-link to="/register/tab1">tab1</router-link>
                      <router-link to="/register/tab2">tab2</router-link>
                      <router-view></router-view>
                  </div>    
          `
        }
    
        // 子组件1
        let tab1 = {
          template: `<h1>tab1</h1>`
        }
    
        //子组件2 
        let tab2 = {
          template: `<h1>tab2</h1>`
        }
    
        // 路由实例
        let router = new VueRouter({
          routes: [
            { path: "/user", component: user },
            {
              path: "/register", component: register, children: [
                // { path: "/register/tab1", component: tab1 },
                // { path: "/register/tab2", component: tab2 },
              ]
            },
            { path: "/register/tab1", component: tab1 },
            { path: "/register/tab2", component: tab2 },
          ]
        })
    
    
    
        // vue实例
        new Vue({
          el: '#app',
          data: {
            message: '页面加载于 ' + new Date().toLocaleString()
          },
          router
        })
      </script>
    
    
    </body>
    
    </html>
    View Code

    当我们点击父组件2,就会在最上面的那个占位符<router-view>这里展示register组件,下图所示:

      问题来了,如果我们再点击tab1呢?因为有两个<router-view>,你觉得tab1组件内容会展示在哪个<router-view>占位符里?

      答案是取决于你的/register/tab1这个路由是写在哪里?如果是放在外面,那么tab1就展示在第一个<router-view>;如果写成/register路由的嵌套路由,才会展示在第二个<router-view>;所以嵌套路由的作用就是让新的页面内容展示在子组件的占位符中;

  • 相关阅读:
    随想24:中国终将发展成第一强国
    随想23:所见的并不一定是真实
    工作4年之后对人性、社会的疯言
    随想22:出路
    开源视频会议bigbluebutton开发(3)——架构体系图
    开源视频会议bigbluebutton开发(2)——配置命令工具
    开源视频会议bigbluebutton开发(1)——初始化安装以及配置
    视频会议之BigBlueButton
    26款 网络会议/视频会议开源软件
    Tomcat 7最大并发连接数的正确修改方法
  • 原文地址:https://www.cnblogs.com/wyq1995/p/14197363.html
Copyright © 2011-2022 走看看