VUE框架CLI组件化配置Router实现单页面多级路由省市区切换联动------VUE框架

本文详细介绍了如何在Vue应用中使用vue-router实现省级(如河北、河南)和城市级(如石家庄、邯郸)的路由配置,包括基本路由和子路由的设置,以及使用`router-link`进行导航和选中状态控制。
摘要由CSDN通过智能技术生成

// 导入vue-router对象
import VueRouter from "vue-router";
import Hebei from "../pages/hebei.vue";
import Henan from "../pages/henan.vue";
import ShiJiaZhuang from "../pages/shijiazhuang.vue";
import HanDan from "../pages/handan.vue";
// 创建路由器对象(在这个路由器对象中配置路由)
const router = new VueRouter({
    // 在这里配置所有的路由规则
    routes : [
        // 这就是一个路由
        {
            // 路由由path和component组成
            // 这个看作key
            // 只要路径检测到的是/hebei就切换到这个组件
            path : "/hebei",
            // 这个就是路由的value,路由的value是一个组件
            component : Hebei,
            // children子路由
            children : [
                // 配置子路由
                {
                    // 对于子路由来说,path不用添加/,以/开始
                    // 系统会自动添加
                    // path : "/hebei/shijiazhuang",
                    path : "shijiazhuang",
                    component : ShiJiaZhuang
                },
                {
                    path : "handan",
                    component : HanDan
                }
            ]
        },
        {
            path : "/henan",
            component : Henan
        }
    ]
});
// 导出路由器对象
export default router;

// 导入vue-router对象

import VueRouter from "vue-router";

import Hebei from "../pages/hebei.vue";

import Henan from "../pages/henan.vue";

import ShiJiaZhuang from "../pages/shijiazhuang.vue";

import HanDan from "../pages/handan.vue";

// 创建路由器对象(在这个路由器对象中配置路由)

const router = new VueRouter({

    // 在这里配置所有的路由规则

    routes : [

        // 这就是一个路由

        {

            // 路由由path和component组成

            // 这个看作key

            // 只要路径检测到的是/hebei就切换到这个组件

            path : "/hebei",

            // 这个就是路由的value,路由的value是一个组件

            component : Hebei,

            // children子路由

            children : [

                // 配置子路由

                {

                    // 对于子路由来说,path不用添加/,以/开始

                    // 系统会自动添加

                    // path : "/hebei/shijiazhuang",

                    path : "shijiazhuang",

                    component : ShiJiaZhuang

                },

                {

                    path : "handan",

                    component : HanDan

                }

            ]

        },

        {

            path : "/henan",

            component : Henan

        }

    ]

});

// 导出路由器对象

export default router;

<template>
    <div>
        <MyHeader></MyHeader>
        <div>
            <h1>省份</h1>
            <ul>
                <!-- 如果使用的是路由方式,就不能使用a标签超链接了 -->
                <!-- 需要使用vue-router提供的标签router-link -->
                <!-- <li><a href="/hebei">河北省</a></li> -->
                <!-- <li><a href="/henan" class="selected">河南省</a></li> -->
                <!-- router-link将来会被自动编译为a标签 -->
                <!-- active-class点中激活,点中的时候激活这个样式 -->
                <li><router-link to="/hebei" active-class="selected">河北省</router-link></li>
                <li><router-link to="/henan" active-class="selected">河南省</router-link></li>
            </ul>
        </div>
        <!-- 路由视图,起到一个占位的作用 -->
        <router-view></router-view>
    </div>
</template>

<script>
import MyHeader from "./components/MyHeader";
export default {
    name : "App",
    components : {MyHeader}
}
</script>

<style>
    .s1{
        margin-left: 100px;
    }
    .s2{
        margin-left: 200px;
    }
    .selected{
        background-color: aqua;
    }
</style>

<template>

    <div>

        <MyHeader></MyHeader>

        <div>

            <h1>省份</h1>

            <ul>

                <!-- 如果使用的是路由方式,就不能使用a标签超链接了 -->

                <!-- 需要使用vue-router提供的标签router-link -->

                <!-- <li><a href="/hebei">河北省</a></li> -->

                <!-- <li><a href="/henan" class="selected">河南省</a></li> -->

                <!-- router-link将来会被自动编译为a标签 -->

                <!-- active-class点中激活,点中的时候激活这个样式 -->

                <li><router-link to="/hebei" active-class="selected">河北省</router-link></li>

                <li><router-link to="/henan" active-class="selected">河南省</router-link></li>

            </ul>

        </div>

        <!-- 路由视图,起到一个占位的作用 -->

        <router-view></router-view>

    </div>

</template>

<script>

import MyHeader from "./components/MyHeader";

export default {

    name : "App",

    components : {MyHeader}

}

</script>

<style>

    .s1{

        margin-left: 100px;

    }

    .s2{

        margin-left: 200px;

    }

    .selected{

        background-color: aqua;

    }

</style>

<template>
    <div>
        <!-- 组件分为普通组件和路由组件 -->
        <div class="s2">
            <h2>县区</h2>
            <ul>
                <li>新华区</li>
                <li>长安区</li>
                <li>裕华区</li>
            </ul>
        </div>
    </div>
</template>

<script>
export default {
    name : "ShiJiaZhuang"
}
</script>

<style>

</style>

<template>

    <div>

        <!-- 组件分为普通组件和路由组件 -->

        <div class="s2">

            <h2>县区</h2>

            <ul>

                <li>新华区</li>

                <li>长安区</li>

                <li>裕华区</li>

            </ul>

        </div>

    </div>

</template>

<script>

export default {

    name : "ShiJiaZhuang"

}

</script>

<style>

</style>

<template>
    <h1>路由与路由器</h1>
</template>

<script>
export default {
    name : "MyHeader"
}
</script>

<style>

</style>

<template>

    <h1>路由与路由器</h1>

</template>

<script>

export default {

    name : "MyHeader"

}

</script>

<style>

</style>

<template>
    <div>
        <!-- 组件分为普通组件和路由组件 -->
        <div class="s1">
            <h2>市区</h2>
            <ul>
                <li><router-link to="/hebei/shijiazhuang" active-class="selected">石家庄</router-link></li>
                <li><router-link to="/hebei/handan" active-class="selected">邯郸</router-link></li>
                <li>保定</li>
                <li>唐山</li>
            </ul>
        </div>
        <!-- 区组件 -->
        <router-view></router-view>
    </div>
</template>

<script>
export default {
    name : "Hebei"
}
</script>

<style>

</style>

<template>

    <div>

        <!-- 组件分为普通组件和路由组件 -->

        <div class="s1">

            <h2>市区</h2>

            <ul>

                <li><router-link to="/hebei/shijiazhuang" active-class="selected">石家庄</router-link></li>

                <li><router-link to="/hebei/handan" active-class="selected">邯郸</router-link></li>

                <li>保定</li>

                <li>唐山</li>

            </ul>

        </div>

        <!-- 区组件 -->

        <router-view></router-view>

    </div>

</template>

<script>

export default {

    name : "Hebei"

}

</script>

<style>

</style>

<template>
    <div>
        <!-- 组件分为普通组件和路由组件 -->
        <div class="s1">
            <h2>市区</h2>
            <ul>
                <li>洛阳</li>
                <li>开封</li>
                <li>安阳</li>
                <li>郑州</li>
            </ul>
        </div>
        <router-view></router-view>
    </div>
</template>

<script>
export default {
    name : "Henan"
}
</script>

<style>

</style>

<template>

    <div>

        <!-- 组件分为普通组件和路由组件 -->

        <div class="s1">

            <h2>市区</h2>

            <ul>

                <li>洛阳</li>

                <li>开封</li>

                <li>安阳</li>

                <li>郑州</li>

            </ul>

        </div>

        <router-view></router-view>

    </div>

</template>

<script>

export default {

    name : "Henan"

}

</script>

<style>

</style>

<template>
    <div>
        <!-- 组件分为普通组件和路由组件 -->
        <div class="s2">
            <h2>县区</h2>
            <ul>
                <li>邯山区</li>
                <li>丛台区</li>
                <li>复兴区</li>
            </ul>
        </div>
    </div>
</template>

<script>
export default {
    name : "HanDan"
}
</script>

<style>

</style>

<template>

    <div>

        <!-- 组件分为普通组件和路由组件 -->

        <div class="s2">

            <h2>县区</h2>

            <ul>

                <li>邯山区</li>

                <li>丛台区</li>

                <li>复兴区</li>

            </ul>

        </div>

    </div>

</template>

<script>

export default {

    name : "HanDan"

}

</script>

<style>

</style>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值