Vue初学4 vue路由

1.vue-router的基本使用

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>

</head>

<body>
    <div id="app">
        <router-link to="/user">User</router-link>
        <router-link to="/register">Register</router-link>

        <!-- 路由占位符 -->
        <router-view></router-view>
    </div>
    <script src="../vue.js"></script>
    <script src="../vue-router_3.0.2.js"></script>
    <script>
        const User = {
            template: "<h1>User组件</h1>"
        }
        const Register = {
            template: "<h1>Register组件</h1>"
        };
        //创建路由实例对象
        const router = new VueRouter({
            //所有的路由规则
            routes: [{
                path: '/user',
                component: User
            }, {
                path: '/register',
                component: Register
            }]
        });
        //创建vm实例对象
        const vm = new Vue({
            //指定控制区域
            el: '#app',
            //挂载路由实例对象

            data: {

            },
            router,
        });
    </script>
</body>

</html>

2.路由重定向

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <div id="app">
        <router-link to="/">重定向</router-link>
        <router-link to="/user">User</router-link>
        <router-link to="/Register">Register</router-link>

        <router-view></router-view>
    </div>
    <script src="../vue.js"></script>
    <script src="../vue-router_3.0.2.js"></script>
    <script>
        const User = {
            template: '<h1>User</h1>'
        }
        const Register = {
            template: '<h1>Register</h1>'
        }
        const router = new VueRouter({
            routes: [{
                path: '/user',
                // redirect: '/Register'
                component: User
            }, {
                path: '/',
                redirect: '/Register'
                    // component: User
            }, {
                path: '/Register',
                component: Register
            }]
        })
        const vm = new Vue({
            el: '#app',
            data: {},
            router,
        })
    </script>
</body>

</html>

3.路由嵌套

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <div id="app">
        <router-link to='/User'>user组件</router-link>
        <router-link to='/Register'>Register组件</router-link>

        <div>
            <router-view></router-view>
        </div>
    </div>
    <script src="../vue.js"></script>
    <script src="../vue-router_3.0.2.js"></script>
    <script>
        const User = {
            template: '<h1>User</h1>'
        }
        const Register = {
            template: `<div>
                <h1>Register组件</h1>
                <hr/>
                <!-- 子路由链接 -->
                <router-link to="/register/tab1">tab1</router-link>
                <router-link to="/register/tab2">tab2</router-link>
                <router-view></router-view>
                <div>`
        }
        const Tab1 = {
            template: "<h3>tab1 子组件</h3>"
        }
        const Tab2 = {
            template: "<h3>tab2 子组件</h3>"
        }
        const router = new VueRouter({
            routes: [{
                path: '/User',
                component: User
            }, {
                path: '/Register',
                component: Register,
                children: [{
                    path: '/register/tab1',
                    component: Tab1
                }, {
                    path: '/register/tab2',
                    component: Tab2
                }]
            }]
        })
        const vm = new Vue({
            el: '#app',
            data: {},
            router
        })
    </script>
</body>

</html>

4.动态路由匹配1

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>

</head>

<body>
    <div id="app">
        <router-link to="/user/1">User1</router-link>
        <router-link to="/user/2">User2</router-link>
        <router-link to="/user/3">User3</router-link>
        <router-link to="/register">Register</router-link>

        <!-- 路由占位符 -->
        <router-view></router-view>
    </div>
    <script src="../vue.js"></script>
    <script src="../vue-router_3.0.2.js"></script>
    <script>
        const User = {
            template: "<h1>User组件</h1>"
        }
        const Register = {
            template: "<h1>Register组件</h1>"
        };
        const UserNum = {
                template: "<h1>User {{$route.params.id}}</h1>"
            }
            //创建路由实例对象
        const router = new VueRouter({
            //所有的路由规则
            routes: [{
                path: '/user/:id',
                component: UserNum,
            }, {
                path: '/user',
                component: User
            }, {
                path: '/register',
                component: Register
            }]
        });
        //创建vm实例对象
        const vm = new Vue({
            //指定控制区域
            el: '#app',
            //挂载路由实例对象

            data: {

            },
            router,
        });
    </script>
</body>

</html>

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.动态路由匹配2

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>

</head>

<body>
    <div id="app">
        <router-link to="/user/1">User1</router-link>
        <router-link to="/user/2">User2</router-link>
        <router-link to="/user/3">User3</router-link>

        <router-link to="/register">Register</router-link>

        <!-- 路由占位符 -->
        <router-view></router-view>
    </div>
    <script src="../vue.js"></script>
    <script src="../vue-router_3.0.2.js"></script>
    <script>
        const User = {
            template: "<h1>User组件</h1>"
        }
        const Register = {
            template: "<h1>Register组件</h1>"
        };
        const UserNum = {
                props: ['id'],
                template: "<h1>User {{id}}</h1>"
            }
            //创建路由实例对象
        const router = new VueRouter({
            //所有的路由规则
            routes: [{
                path: '/user/:id',
                component: UserNum,
                props: true
            }, {
                path: '/user',
                component: User
            }, {
                path: '/register',
                component: Register
            }]
        });
        //创建vm实例对象
        const vm = new Vue({
            //指定控制区域
            el: '#app',
            //挂载路由实例对象

            data: {

            },
            router,
        });
    </script>
</body>

</html>

6.动态匹配路由3

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>

</head>

<body>
    <div id="app">
        <router-link to="/user/1">User1</router-link>
        <router-link to="/user/2">User2</router-link>
        <router-link to="/user/3">User3</router-link>

        <router-link to="/register">Register</router-link>

        <!-- 路由占位符 -->
        <router-view></router-view>
    </div>
    <script src="../vue.js"></script>
    <script src="../vue-router_3.0.2.js"></script>
    <script>
        const User = {
            template: "<h1>User组件</h1>"
        }
        const Register = {
            template: "<h1>Register组件</h1>"
        };
        const UserNum = {
            props: ['id', 'username', 'age'],
            template: "<h1>User 姓名为:{{username}} 年龄为:{{age}}</h1>"
        };
        //创建路由实例对象
        const router = new VueRouter({
            //所有的路由规则
            routes: [{
                path: '/user/:id',
                component: UserNum,
                props: {
                    username: 'lisi',
                    age: 20
                }
            }, {
                path: '/user',
                component: User
            }, {
                path: '/register',
                component: Register
            }]
        });
        //创建vm实例对象
        const vm = new Vue({
            //指定控制区域
            el: '#app',
            //挂载路由实例对象

            data: {

            },
            router,
        });
    </script>
</body>

</html>

7.动态路由匹配

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>

</head>

<body>
    <div id="app">
        <router-link to="/user/1">User1</router-link>
        <router-link to="/user/2">User2</router-link>
        <router-link to="/user/3">User3</router-link>

        <router-link to="/register">Register</router-link>

        <!-- 路由占位符 -->
        <router-view></router-view>
    </div>
    <script src="../vue.js"></script>
    <script src="../vue-router_3.0.2.js"></script>
    <script>
        const User = {
            template: "<h1>User组件</h1>"
        }
        const Register = {
            template: "<h1>Register组件</h1>"
        };
        const UserNum = {
                props: ['id', 'username', 'age'],
                template: "<h1>User 用户id为{{id}}  姓名为:{{username}}  年龄为:{{age}}</h1>"
            }
            //创建路由实例对象
        const router = new VueRouter({
            //所有的路由规则
            routes: [{
                path: '/user/:id',
                component: UserNum,
                props: route => ({
                    username: 'zx',
                    age: 20,
                    id: route.params.id
                })
            }, {
                path: '/user',
                component: User
            }, {
                path: '/register',
                component: Register
            }]
        });
        //创建vm实例对象
        const vm = new Vue({
            //指定控制区域
            el: '#app',
            //挂载路由实例对象

            data: {

            },
            router,
        });
    </script>
</body>

</html>

8.命名路由

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>

</head>

<body>
    <div id="app">
        <router-link to="/user/1">User1</router-link>
        <router-link to="/user/2">User2</router-link>
        <router-link :to="{name:'user',params:{id:123}}">User3</router-link>

        <router-link to="/register">Register</router-link>

        <!-- 路由占位符 -->
        <router-view></router-view>
    </div>
    <script src="../vue.js"></script>
    <script src="../vue-router_3.0.2.js"></script>
    <script>
        const User = {
            template: "<h1>User组件</h1>"
        }
        const Register = {
            template: "<h1>Register组件</h1>"
        };
        const UserNum = {
                props: ['id', 'username', 'age'],
                template: "<h1>User 用户id为{{id}}  姓名为:{{username}}  年龄为:{{age}}</h1>"
            }
            //创建路由实例对象
        const router = new VueRouter({
            //所有的路由规则
            routes: [{
                name: 'user',
                path: '/user/:id',
                component: UserNum,
                props: route => ({
                    username: 'zx',
                    age: 20,
                    id: route.params.id
                })
            }, {
                path: '/user',
                component: User
            }, {
                path: '/register',
                component: Register
            }]
        });
        //创建vm实例对象
        const vm = new Vue({
            //指定控制区域
            el: '#app',
            //挂载路由实例对象

            data: {

            },
            router,
        });
    </script>
</body>

</html>

9.编程式导航

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>

</head>

<body>
    <div id="app">
        <router-link to="/user/1">User1</router-link>
        <router-link to="/user/2">User2</router-link>
        <router-link :to="{name:'user',params:{id:123}}">User3</router-link>

        <router-link to="/register">Register</router-link>

        <!-- 路由占位符 -->
        <router-view></router-view>
    </div>
    <script src="../vue.js"></script>
    <script src="../vue-router_3.0.2.js"></script>
    <script>
        const User = {
            template: "<h1>User组件</h1>"
        }
        const Register = {
            template: `<div>
                <h1>Register组件</h1>
                <button @click="goback">后退</button>
                </div>`,
            methods: {
                goback() {
                    this.$router.go(-1)
                }
            },
        };
        const UserNum = {
                props: ['id', 'username', 'age'],
                template: `<div>
                    <h1>User 用户id为{{id}}  姓名为:{{username}}  年龄为:{{age}}</h1>
                    <button @click="goRegister">跳转到注册页面</button>
                    </div>`,
                methods: {
                    goRegister() {
                        this.$router.push('/register')
                    }
                },
            }
            //创建路由实例对象
        const router = new VueRouter({
            //所有的路由规则
            routes: [{
                name: 'user',
                path: '/user/:id',
                component: UserNum,
                props: route => ({
                    username: 'zx',
                    age: 20,
                    id: route.params.id
                })
            }, {
                path: '/user',
                component: User
            }, {
                path: '/register',
                component: Register
            }]
        });
        //创建vm实例对象
        const vm = new Vue({
            //指定控制区域
            el: '#app',
            //挂载路由实例对象

            data: {

            },
            router,
        });
    </script>
</body>

</html>

10.开启history模式

在这里插入图片描述

11.修改active路由的样式

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值