vue路由--嵌套路由

作者: 手指乐 | 来源:发表于2019-09-30 16:31 被阅读0次
  • 静态嵌套路由:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="app">
    <router-link to="/green">green</router-link>
    <router-link to="/fruit">fruit</router-link>
<router-view></router-view>
</div>
<template id="green">
<div>蔬菜
    <router-link to="/green/organic">有机</router-link>
    <router-link to="/green/inorganic">无机</router-link>
    <router-view></router-view>
</div>
</template>
<template id="fruit">
<div>水果
    <router-link to="/fruit/sweet">甜的</router-link>
    <router-link to="/fruit/acid">酸的</router-link>
    <router-view></router-view>
</div>
</template>
</body>
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
<script>
    //父路由 有蔬菜,水果,蔬菜里面有有机蔬菜,无机蔬菜 ,水果里面有甜的酸的
    let green={template:'#green'}
    let organic={template:"<div>有机蔬菜organic</div>"}
    let inorganic={template:"<div>无机蔬菜inorganic</div>"}
    let fruit={template:'#fruit'}
    let sweet={template:"<div>甜的</div>"}
    let acid={template:"<div>酸的</div>"}
    //路由路径映射表
    let routes=[
        //路由默认去的第一个组件
        {
            path:'',
            component:green
        },
        {
            path:"/green",
            component:green,
            children:[
                {
                    path:"",
                    component:organic
                },
                {
                    path:"organic",
                    component:organic
                },
                {
                    path:"inorganic",
                    component:inorganic
                }
            ]
        },
        {
            path:"/fruit",
            component:fruit,
            children:[
                {
                    path:"",
                    component:sweet
                },
                {
                    path:"sweet",
                    component:sweet
                },
                {
                    path:"acid",
                    component:acid
                }
            ]
 
        },
        //所有没有找到时候,去地址/green的组件
        {
            path:"*",
            redirect:'/green'
        }
 
    ]
    //实例化一个路由
    let router=new VueRouter({
        routes
    })
    let vm=new Vue({
        el:"#app",
        data:{
        },
        router
    })
</script>
</html> 

嵌套路由要通过子路由的方式实现,如果改成以下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="app">
    <router-link to="/green">green</router-link>
    <router-link to="/fruit">fruit</router-link>
<router-view></router-view>
</div>
<template id="green">
<div>蔬菜
    <router-link to="/green/organic">有机</router-link>
    <router-link to="/green/inorganic">无机</router-link>
    <router-view></router-view>
</div>
</template>
<template id="fruit">
<div>水果
    <router-link to="/sweet">甜的</router-link>
    <router-link to="/acid">酸的</router-link>
    <router-view></router-view>
</div>
</template>
</body>
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
<script>
    //父路由 有蔬菜,水果,蔬菜里面有有机蔬菜,无机蔬菜 ,水果里面有甜的酸的
    let green={template:'#green'}
    let organic={template:"<div>有机蔬菜organic</div>"}
    let inorganic={template:"<div>无机蔬菜inorganic</div>"}
    let fruit={template:'#fruit'}
    let sweet={template:"<div>甜的</div>"}
    let acid={template:"<div>酸的</div>"}
    //路由路径映射表
    let routes=[
        //路由默认去的第一个组件
        {
            path:'',
            component:green
        },
        {
            path:"/green",
            component:green,
            children:[
                {
                    path:"",
                    component:organic
                },
                {
                    path:"organic",
                    component:organic
                },
                {
                    path:"inorganic",
                    component:inorganic
                }
            ]
        },
        {
            path:"/fruit",
            component:fruit
 
        },
        {
            path:"/sweet",
            component:sweet
 
        }, 
        {
            path:"/acid",
            component:acid
 
        },
        //所有没有找到时候,去地址/green的组件
        {
            path:"*",
            redirect:'/green'
        }
 
    ]
    //实例化一个路由
    let router=new VueRouter({
        routes
    })
    let vm=new Vue({
        el:"#app",
        data:{
        },
        router
    })
</script>
</html>

首先没法用类似/fruit/sweet的路由跳转
用/sweet这样的路由,会把模板渲染到第一个router-view里

  • 把fruit里的两种类型变成动态参数(接收任意水果类型作为动态参数)
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="app">
    <router-link to="/green">green</router-link>
    <router-link to="/fruit">fruit</router-link>
<router-view></router-view>
</div>
<template id="green">
<div>蔬菜
    <router-link to="/green/organic">有机</router-link>
    <router-link to="/green/inorganic">无机</router-link>
    <router-view></router-view>
</div>
</template>
<template id="fruit">
<div>水果
    <router-link to="/fruit/sweet">甜的</router-link>
    <router-link to="/fruit/acid">酸的</router-link>
    <router-view></router-view>
</div>
</template>
</body>
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
<script>
    //父路由 有蔬菜,水果,蔬菜里面有有机蔬菜,无机蔬菜 ,水果里面有甜的酸的
    let green={template:'#green'}
    let organic={template:"<div>有机蔬菜organic</div>"}
    let inorganic={template:"<div>无机蔬菜inorganic</div>"}
    let fruit={template:'#fruit'}
    let fruittype ={template:"<div>{{ $route.params.type }}</div>"}
    //let sweet={template:"<div>甜的</div>"}
    //let acid={template:"<div>酸的</div>"}
    //路由路径映射表
    let routes=[
        //路由默认去的第一个组件
        {
            path:'',
            component:green
        },
        {
            path:"/green",
            component:green,
            children:[
                {
                    path:"",
                    component:organic
                },
                {
                    path:"organic",
                    component:organic
                },
                {
                    path:"inorganic",
                    component:inorganic
                }
            ]
        },
        {
            path:"/fruit",
            component:fruit,
            children:[
                {
                    path: '/',
                    redirect: 'sweet'
                },
                {
                    path:":type",
                    component:fruittype
                }
      
            ]
 
        },
 
    ]
    //实例化一个路由
    let router=new VueRouter({
        routes
    })
    let vm=new Vue({
        el:"#app",
        data:{
        },
        router
    })
</script>
</html>

相关文章

  • vue路由

    路由:vue-router 案例: 1.路由 2.路由的嵌套

  • vue中的路由

    vue中4中路由包含: 1、动态路由2、嵌套路由3、编程式路由4、命名式路由 1、动态路由 2、嵌套路由 3、编程...

  • vue嵌套路由与404重定向实现方法分析

    第一部分: vue嵌套路由 嵌套路由是什么? 嵌套路由就是在一个被路由过来的页面下可以继续使用路由,嵌套也就是路由...

  • 6 VUE路由

    vue-> SPA应用,单页面应用(引入vue-router.js) 路由嵌套(多层路由): 路由其他信息:

  • vue-router

    前端路由的基本原理 vue-router的基本使用 命名路由 路由参数 嵌套路由

  • 手写 Vue Router、手写响应式实现、虚拟 DOM 和 D

    Vue-Router 原理实现 一、Vue-Router 动态路由 二、Vue-Router 嵌套路由 三、Vue...

  • vue 第八章

    路由1.路由下载用gitnpm install vuenpm install vue-router 2.路由嵌套嵌...

  • 前端理论面试-router+axios

    Vue Router Vue Router 是 Vue.js 官方的路由管理器。 包含的功能有: 嵌套的路由/视图...

  • vue-router 常用知识点一

    目录 - 1.vue-router响应 路由参数 的变化 - 2.vue-router如何定义嵌套路由? - 3....

  • Vue-基础-05-重点

    Vue-基础-day05-重点 01-基础-路由-vue-router-嵌套路由 children用法和route...

网友评论

    本文标题:vue路由--嵌套路由

    本文链接:https://www.haomeiwen.com/subject/hfhhpctx.html