登录  /  注册
首页 > web前端 > js教程 > 正文

Vue三层嵌套路由使用心得

php中世界最好的语言
发布: 2018-05-12 14:34:05
原创
4882人浏览过

这次给大家带来Vue三层嵌套路由使用心得,Vue三层嵌套路由使用的注意事项有哪些,下面就是实战案例,一起来看一下。

Vue嵌套路由:

实现效果(路由三层嵌套,点击一级tab显示二级tab效果,二级tab点击切换对应内容,不在tab区域里的内容,切换时不重复渲染):

Demo访问时路径:http://IP:端口/#/routers/

1.建立案例文件夹 page/routers/

1 routers/index.vue

<template>
 <p>
   <router-link>首页</router-link>
   <router-link>新闻</router-link>
   <router-link>娱乐</router-link>
  
    <!-- 二级子路由页面 -->
    <router-view></router-view>
 </p>
</template><script>
export default {
 data(){
  return {
     selected: 1
  }
 },
 methods: {
  tabck(index){
    this.selected = index; //设置tab选中项
  }
 }
}
</script><style>
 .rlink {
  padding: 5px;
  margin: 5px;
  margin-bottom: 10px;
  display: inline-block;
  text-decoration: none;
  color: blue;
 }
 .rlink.active {
  color: red;
  text-decoration: underline;
 }
</style>
登录后复制

1-1-1 routers/home/index.vue

<template>
 <p>
   HOME页面信息:<br>
   <router-link>最新HOME</router-link>
   <router-link>国际HOME</router-link>
   <router-link>国内HOME</router-link>
  
  <!-- 子路由(三层) -->
   <router-view></router-view>
 </p>
</template><script>
 export default {
  data(){
    return {
      selected: 1
    }
  },
  methods: {
   tabck(index) {
     this.selected = index; //设置选中tab
   }
  }
 }
</script><style>
</style>
登录后复制

1-1-2 routers/home/tab/gj.vue、gn.vue、zx.vue

gj.vue:

<template>
 <p>
    国际HOME信息:<br>
     </p>
<ul>
       <li>{{result.name}}{{index}}</li>
     </ul>
 
</template><script>
 export default {
  data(){
   return {
     list: [
      {name:&#39;国际HOME&#39;},
      {name:&#39;国际HOME&#39;},
      {name:&#39;国际HOME&#39;}
     ]
   }
  }
 }
</script>
登录后复制

gn.vue :

<template>
 <p>
    国内HOME信息:<br>
     </p>
<ul>
       <li>{{result.name}}{{index}}</li>
     </ul>
 
</template><script>
 export default {
  data(){
   return {
     list: [
      {name:&#39;国内HOME&#39;},
      {name:&#39;国内HOME&#39;}
     ]
   }
  }
 }
</script>
登录后复制

zx.vue:

<template>
 <p>
    最新HOME信息:<br>
     </p>
<ul>
       <li>{{result.name}}{{index}}</li>
     </ul>
 
</template><script>
 export default {
  data(){
   return {
     list: [
      {name:&#39;最新HOME&#39;}
     ]
   }
  }
 }
</script>
登录后复制

1-2 routers/news/index.vue

<template>
 <p>
    新闻页面信息:<br>
    <router-link>最新新闻</router-link>
    <router-link>国际新闻</router-link>
    <router-link>国内新闻</router-link>
  <!-- 子路由 -->
  <router-view></router-view>
 </p>
</template><script>
 export default {
  data () {
   return {
     selected: 1
   }
  },
  methods: {
   tabck(index){
    this.selected = index; //切换tab,设置选中项
   }
  } 
 }
</script>
登录后复制

1-2-1 routers/news/tab/gj.vue、gn.vue、zx.vue

gj.vue:

<template>
 <p>
    国际新闻信息:<br>
     </p>
<ul>
       <li>{{result.name}}{{index}}</li>
     </ul>
 
</template><script>
 export default {
  data(){
   return {
     list: [
      {name:&#39;国际新闻信息&#39;},
      {name:&#39;国际新闻信息&#39;},
      {name:&#39;国际新闻信息&#39;},
      {name:&#39;国际新闻信息&#39;},
      {name:&#39;国际新闻信息&#39;}
     ]
   }
  }
 }
</script>
登录后复制

gn.vue:

<template>
 <p>
    国内新闻信息:<br>
     </p>
<ul>
       <li>{{result.name}}{{index}}</li>
     </ul>
 
</template><script>
 export default {
  data(){
   return {
     list: [
      {name:&#39;国内新闻信息&#39;},
      {name:&#39;国内新闻信息&#39;}
     ]
   }
  }
 }
</script>
登录后复制

zx.vue:

<template>
 <p>
    最新新闻信息:<br>
     </p>
<ul>
       <li>{{result.name}}{{index}}</li>
     </ul>
 
</template><script>
 export default {
  data(){
   return {
     list: [
      {name:&#39;最新新闻信息&#39;},
      {name:&#39;最新新闻信息&#39;}
     ]
   }
  }
 }
</script>
登录后复制

1-3-1 routers/yl/index.vue

<template>
 <p>
    娱乐页面信息:<br>
    <router-link>最新娱乐</router-link>
    <router-link>明星娱乐</router-link>
    <router-link>焦点娱乐</router-link>
   
    <!-- 子路由-->
    <router-view></router-view>
 </p>
 <script>
  export default {
   data(){
    return {
     selected: 1
    }
   },
   methods: {
    tabck(index){
     this.selected = index; //设置tab选中项
    }
   }
  }
 </script></template>
登录后复制

1-3-2 routers/yl/tab/jd.vue、mx.vue、zx.vue

jd.vue:

<template>
 <p>
    焦点娱乐信息:<br>
     </p>
<ul>
       <li>{{result.name}}{{index}}</li>
     </ul>
 
</template><script>
 export default {
  data(){
   return {
     list: [
      {name:&#39;焦点娱乐信息&#39;},
      {name:&#39;焦点娱乐信息&#39;}
     ]
   }
  }
 }
</script>
登录后复制

mx.vue:

<template>
 <p>
    明星娱乐信息:<br>
     </p>
<ul>
       <li>{{result.name}}{{index}}</li>
     </ul>
 
</template><script>
 export default {
  data(){
   return {
     list: [
      {name:&#39;明星娱乐信息&#39;},
      {name:&#39;明星娱乐信息&#39;}
     ]
   }
  }
 }
</script>
登录后复制

zx.vue:

<template>
 <p>
    最新娱乐信息:<br>
     </p>
<ul>
       <li>{{result.name}}{{index}}</li>
     </ul>
 
</template><script>
 export default {
  data(){
   return {
     list: [
      {name:&#39;最新娱乐信息&#39;},
      {name:&#39;最新娱乐信息&#39;}
     ]
   }
  }
 }
</script>
登录后复制

2.路由配置规则(router/index.js)

....
 省略导入路由、使用路由代码...
....
// 嵌套路由的使用:第一层
import Rindex from '../page/routers/index'
// 嵌套路由的使用:第二层
import Rhome from '../page/routers/home/index'
// 嵌套路由的使用:第三层
import Rhomezx from '../page/routers/home/tab/zx'
import Rhomegj from '../page/routers/home/tab/gj'
import Rhomegn from '../page/routers/home/tab/gn'
import Rnews from '../page/routers/news/index'
import Rnewszx from '../page/routers/news/tab/zx'
import Rnewsgj from '../page/routers/news/tab/gj'
import Rnewsgn from '../page/routers/news/tab/gn'
import Ryl from '../page/routers/yl/index'
import Rylzx from '../page/routers/yl/tab/zx'
import Rylmx from '../page/routers/yl/tab/mx'
import Ryljd from '../page/routers/yl/tab/jd'
// 路由规则配置:
export default new Router({
 routes : [
  {
   name: 'rindex',
   path: '/routers',
   component: Rindex,
   redirect: {name: 'rindex_rhome'}, // 跳转到下一级第一个
   children: [
     {
       name: 'rindex_rhome',
       path: 'rindex_rhome', //如果这里不使用 "/rhome" 则表示是归属于上级路由(上级luyou/子path),如果使用 "/rhome" 则表示根路径下访问
       component: Rhome,
       redirect: {name: 'rindex_rhome_Rhomezx'}, //跳转到下级第一层
       children: [
        {
         name: 'rindex_rhome_Rhomezx',
         path: 'rindex_rhome_Rhomezx',
         component: Rhomezx
        },
        {
         name: 'rindex_rhome_Rhomegj',
         path: 'rindex_rhome_Rhomegj',
         component: Rhomegj
        },
        {
         name: 'rindex_rhome_Rhomegn',
         path: 'rindex_rhome_Rhomegn',
         component: Rhomegn
        }
      ]
     },
     {
      name: 'rindex_rnews',
      path: 'rindex_rnews',
      component: Rnews,
      redirect: {name: 'rindex_rnews_Rnewszx'},
      children: [
       {
         name: 'rindex_rnews_Rnewszx',
         path: 'rindex_rnews_Rnewszx',
         component: Rnewszx
       },
       {
         name: 'rindex_rnews_Rnewsgj',
         path: 'rindex_rnews_Rnewsgj',
         component: Rnewsgj
       },
       {
         name: 'rindex_rnews_Rnewsgn',
         path: 'rindex_rnews_Rnewsgn',
         component: Rnewsgn
       }
      ]
    },
    {
      name: 'rindex_ryl',
      path: 'rindex_ryl',
      component: Ryl,
      redirect: {name: 'rindex_ryl_rylzx'},
      chidren:[
        {
          name: 'rindex_ryl_rylzx',
          path: 'rindex_ryl_rylzx',
          component: Rylzx
        },
        {
          name: 'rindex_ryl_rylmx',
          path: 'rindex_ryl_rylmx',
          component: Rylmx
        },
        {
          name: 'rindex_ryl_ryljd',
          path: 'rindex_ryl_ryljd',
          component: Ryljd
        }
      ]
    }
   ]
  }
 ]
});
登录后复制

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:

Vue.js计算与侦听器属性使用详解

H5的data-*自定义属性使用详解

以上就是Vue三层嵌套路由使用心得的详细内容,更多请关注php中文网其它相关文章!

智能AI问答
PHP中文网智能助手能迅速回答你的编程问题,提供实时的代码和解决方案,帮助你解决各种难题。不仅如此,它还能提供编程资源和学习指导,帮助你快速提升编程技能。无论你是初学者还是专业人士,AI智能助手都能成为你的可靠助手,助力你在编程领域取得更大的成就。
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
关于CSS思维导图的课件在哪? 课件
凡人来自于2024-04-16 10:10:18
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号