vue教程3-06 vue路由嵌套(多层路由),路由其他信息

本文通过一个具体的示例介绍了Vue.js中如何实现多级嵌套路由,包括页面结构搭建、路由配置及动态参数传递等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

多层嵌套:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script src="bower_components/vue/dist/vue.js"></script>
    <script src="bower_components/vue-router/dist/vue-router.js"></script>
    <style>
        .v-link-active{
            font-size: 20px;
            color: #f60;
        }
    </style>
</head>
<body>
    <div id="box">
        <ul>
            <li>
                <a v-link="{path:'/home'}">主页</a>
            </li>
            <li>
                <a v-link="{path:'/news'}">新闻</a>
            </li>
        </ul>
        <div>
            <router-view></router-view>
        </div>    
    </div>

    <template id="home">
        <h3>我是主页</h3>
        <div>
            <a v-link="{path:'/home/login'}">登录</a>
            <a v-link="{path:'/home/reg'}">注册</a>
        </div>
        <div>
            <router-view></router-view>
        </div>
    </template>
    <template id="news">
        <h3>我是新闻</h3>
    </template>
    <script>
        //1. 准备一个根组件
        var App=Vue.extend();

        //2. Home News组件都准备
        var Home=Vue.extend({
            template:'#home'
        });

        var News=Vue.extend({
            template:'#news'
        });

        //3. 准备路由
        var router=new VueRouter();

        //4. 关联
        router.map({
            'home':{
                component:Home,
                subRoutes:{
                    'login':{
                        component:{
                            template:'<strong>我是登录信息</strong>'
                        }
                    },
                    'reg':{
                        component:{
                            template:'<strong>我是注册信息</strong>'
                        }
                    }
                }
            },
            'news':{
                component:News
            }
        });

        //5. 启动路由
        router.start(App,'#box');

        //6. 跳转
        router.redirect({
            '/':'home'
        });
    </script>
</body>
</html>

效果图:

路由其他信息:
路由其他信息:
    /detail/:id/age/:age

    {{$route.params | json}}    ->  当前参数

    {{$route.path}}    ->  当前路径
    
    {{$route.query | json}}    ->  数据
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script src="bower_components/vue/dist/vue.js"></script>
    <script src="bower_components/vue-router/dist/vue-router.js"></script>
    <style>
        .v-link-active{
            font-size: 20px;
            color: #f60;
        }
    </style>
</head>
<body>
    <div id="box">
        <ul>
            <li>
                <a v-link="{path:'/home'}">主页</a>
            </li>
            <li>
                <a v-link="{path:'/news'}">新闻</a>
            </li>
        </ul>
        <div>
            <router-view></router-view>
        </div>    
    </div>

    <template id="home">
        <h3>我是主页</h3>
        <div>
            <a v-link="{path:'/home/login/zns'}">登录</a>
            <a v-link="{path:'/home/reg/strive'}">注册</a>
        </div>
        <div>
            <router-view></router-view>
        </div>
    </template>
    <template id="news">
        <h3>我是新闻</h3>
        <div>
            <a v-link="{path:'/news/detail/001'}">新闻001</a>
            <a v-link="{path:'/news/detail/002'}">新闻002</a>
        </div>
        <router-view></router-view>
    </template>
    <template id="detail">
        {{$route.params | json}}
        <br>
        {{$route.path}}
        <br>
        {{$route.query | json}}
    </template>
    <script>
        //1. 准备一个根组件
        var App=Vue.extend();

        //2. Home News组件都准备
        var Home=Vue.extend({
            template:'#home'
        });

        var News=Vue.extend({
            template:'#news'
        });

        var Detail=Vue.extend({
            template:'#detail'
        });

        //3. 准备路由
        var router=new VueRouter();

        //4. 关联
        router.map({
            'home':{
                component:Home,
                subRoutes:{
                    'login/:name':{
                        component:{
                            template:'<strong>我是登录信息 {{$route.params | json}}</strong>'
                        }
                    },
                    'reg':{
                        component:{
                            template:'<strong>我是注册信息</strong>'
                        }
                    }
                }
            },
            'news':{
                component:News,
                subRoutes:{
                    '/detail/:id':{
                        component:Detail
                    }
                }
            }
        });

        //5. 启动路由
        router.start(App,'#box');

        //6. 跳转
        router.redirect({
            '/':'home'
        });
    </script>
</body>
</html>

效果图:

 

转载于:https://www.cnblogs.com/baiyangyuanzi/p/6795075.html

参考资源链接:[Vue-Router嵌套路由详解:从一层到多层的过渡](https://wenku.youkuaiyun.com/doc/645350bcea0840391e7797b8?utm_source=wenku_answer2doc_content) 在使用Vue.js开发复杂单页应用时,通过Vue-Router实现多层路由嵌套是常见的需求。以下是如何在Vue-Router中设置和使用多层路由嵌套的详细步骤: 1. **设置根路由**:首先,在Vue实例中定义根路由配置,包括所有顶层路由。 ```javascript const router = new VueRouter({ routes: [ { path: &#39;/profile&#39;, component: Profile, children: [ { path: &#39;list&#39;, component: ProfileList }, { path: &#39;item/:id&#39;, component: ProfileItem } ] }, { path: &#39;/posts&#39;, component: Posts, children: [ { path: &#39;new&#39;, component: NewPost }, { path: &#39;edit/:id&#39;, component: EditPost } ] } ] }); ``` 在上面的路由配置中,我们设置了两个顶层路由`/profile`和`/posts`,并且`/profile`路由下又定义了两个子路由`list`和`item/:id`,而`/posts`路由下则定义了`new`和`edit/:id`两个子路由。 2. **嵌套路由视图**:在父组件`Profile`和`Posts`中,你需要放置一个`<router-view>`组件,用于渲染对应的子路由组件。 ```html <!-- Profile.vue --> <template> <div> <h1>Profile</h1> <router-view></router-view> </div> </template> <!-- Posts.vue --> <template> <div> <h1>Posts</h1> <router-view></router-view> </div> </template> ``` 3. **导航到嵌套路由**:在任何组件内,你可以使用`<router-link>`来创建导航链接到嵌套路由路径,或者使用`this.$router.push`方法编程式导航。 ```html <!-- 在Profile.vue--> <router-link to= 参考资源链接:[Vue-Router嵌套路由详解:从一层到多层的过渡](https://wenku.youkuaiyun.com/doc/645350bcea0840391e7797b8?utm_source=wenku_answer2doc_content)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值