Vue的路由

Vue可以实现一种类是ajax不刷新但是切换界面 然后 只是在你的url中的当前地址后面追加信息

首先你要先当如这个路由的模块:

<script src="https://unpkg.com/vue-router/dist/vue-router.js"></script> <!-- 你要用路由首先先导入路由这个模块才能用 -->

路由的导入要尤记住几点;

div中的  路由的入口和路由的出口不可忘家


<router-link to='你要指向的路由'> </router-link>   这个是入口


<router-view></router-view>  这个是出口


script    中你要设置你的路由的信息  path和要渲染的内容  然后把这些 赋值给你的路由对象中的 routes  然后你的这个对象要赋值给vue实例中的router

代码:

<body>

<div id="app">

    <!--路由的入口要用router-link-->
    <router-link to="/index">index</router-link>

    <router-link to="/home">home</router-link>


    <hr>
    <!--路由的出口-->
    <router-view></router-view>
</div>

    <!--  -->
    <!-- 开发环境版本,包含了有帮助的命令行警告 -->
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script> <!-- 你要用路由首先先导入路由这个模块才能用 -->

<script>
    const routes = [
        {
            path:'/index',  //  这个是index这个路由的地址
            component:{   // 这个是这个路由要渲染的信息
                template:`<div>
                        <h1>这是index界面</h1>
                </div>`
            }
        },
        {
            path:'/home',
            component:{
                template:`
                    <div>
                        <h1>这个是home界面</h1>
                    </div>

                `
            }
        }
    ]
    const routerObj = new VueRouter({
        routes: routes
    })
    var app = new Vue({
        el:'#app',
        data:{},
        router :routerObj
    })
</script>
</body>
路由实例一

我们也可以用到类似于其他语言的框架的url匹配  很多语言利用re正则来匹配 ,我们的vue也创建了模糊匹配 ,这样我们就可以用的时候,  只需要选择自己选择的就可以匹配到了相应的url

模糊匹配 我们需要在path中调整,用:来进行模糊匹配:

path:'/index/:name',  //  这个是利用模糊匹配  利用: 来设置模糊匹配

我们可以利用特定的 语法来获取我们的url中的内容

$route.params.name   获取你上面的设置的path中的index后面的name的语法  只要是post的都可以这样获取

在url中输入的就是get请求的我们可以这样获取

$route.query.age   获取你在url上输入的age的值



$route.query.hobby   获取你在url上输入的hobby的值
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <div id="app">
        <router-link to="/index/laowang">老王</router-link>
        <router-link to="/index/laoli">老李</router-link>

        <router-view></router-view>
    </div>


    <!--  -->
    <!-- 开发环境版本,包含了有帮助的命令行警告 -->
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script> <!-- 你要用路由首先先导入路由这个模块才能用 -->

    <script>
        const routes = [
            {
                path:'/index/:name',  //  这个是利用模糊匹配  利用: 来设置模糊匹配
                component:{
                    template:`
                        <div>
                            <h1>这是{{ $route.params.name }}的界面</h1>
                            <p>{{ $route.query.age }}</p>
                            <p>{{ $route.query.hobby }}</p>
                        </div>
                    `
                }
            }
        ]
        const routerObj = new VueRouter({
            routes: routes

        })

        var app = new Vue({
            el:'#app',
            router:routerObj
        })

    </script>

</body>
</html>
模糊匹配

路由参数:

路由的参数
            1. path: '/user/:name' --> 匹配路由
            $route.params.name     --> 取值
            
            2. /user/alex?age=9000 --> url中携带参数
            $route.query.age       --> 取出url的参数

子路由:

我们还可以设置子路由:就是给我们已经设置的路由在添加路由,这个时候你要想想怎么添加路由

我们可以在渲染父路由的时候  渲染子路由

就是在以前的路由的component的template中把自路由渲染进去

 path:'/index/:name',
                component:{
                    template:
                        `
                        <div>
                            <p>这是{{ $route.params.name }}的界面</p>
                            <p>{{ $route.query.age }}</p>
                            <p>{{ $route.query.hobby }}</p>

                            <hr>
                            <router-link to='info append'>用户信息<router-link>   把自路由添加进去 append
                            <router-view></router-view>
                        </div>

                    `
                },

然后再用children给设置子路由

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

    <div id="app">

        <router-link to="/index/laowang">老王</router-link>
        <router-link to="/index/laoli">老李</router-link>

        <router-view></router-view>

    </div>

    <!--  -->
    <!-- 开发环境版本,包含了有帮助的命令行警告 -->
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>


    <script>
        const routes = [
            {
                path:'/index/:name',
                component:{
                    template:
                        `
                        <div>
                            <p>这是{{ $route.params.name }}的界面</p>
                            <p>{{ $route.query.age }}</p>
                            <p>{{ $route.query.hobby }}</p>

                            <hr>
                            <router-link to='info append'>用户信息<router-link>
                            <router-view></router-view>
                        </div>

                    `
                },
                children:[  //添加一个子路由
                    {
                        path:'/info',
                        component:{
                            template:`
                                <div>
                                <h1>钗头凤 唐婉</h1>
                                <p>忠厚老实人的恶毒像饭里的砂砾或脱骨鱼片里未净的刺给人一种不期待的伤痛。</p>
                            </div>
                            `
                        }
                    }
                ]

            }
        ]


        const routerObj = new VueRouter({
            routes:routes
        })

        var app = new Vue({
            el:'#app',
            data:{},
            router:routerObj
        })

    </script>

</body>
</html>

猜你喜欢

转载自www.cnblogs.com/zhaoyunlong/p/9374443.html