快速理解 vue-router (vue路由)的使用方法(一)

特意整理了一下 vue-router 的使用方法,可以整篇复制直接看效果,里面写了很多注释,帮助你看懂路由的使用方法

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <div id="div1">
        <div>
            <!-- router-link的作用就是代替a标签实现跳转,好处是没有刷新 -->
            <router-link to="/home">首页</router-link>
            <router-link to="/about">关于我们页</router-link>
            <router-link to="/user/张三">张三</router-link>
            <router-link to="/user/李四">李四</router-link>
            <button @click="pushUser">手动添加访问用户</button>
        </div>

        <div>
            <!-- 跳转之后显示的内容 -->
            <router-view></router-view>
        </div>
    </div>
    

    <script src="https://cdn.bootcss.com/vue/2.6.0/vue.js"></script>
    <script src="https://cdn.bootcss.com/vue-router/2.6.0/vue-router.js"></script>

    <script>
        window.onload = function(){

            // routesArr 的作用是配置好跳转路径和跳转之后的内容
            let routesArr = [
                {
                    path: '/home',
                    component: {
                        template:`<div>
                        <h1>这是首页</h1>
                        </div>`
                    }
                },{
                    path: '/about',
                    component: {
                        template: `<div>
                            <p>这是关于我们页</p>
                        </div>`
                    }
                },{
                    path: '/user/:name',    // :name的作用是动态访问一个地址,比如传进来的是张三,就显示张三的信息
                    name: 'user',   // 这个name的作用是配合第95行添加属性用的,二者必须一致 
                    component: {
                        template: `<div>

                            <!-- $route.params的作用是接收传进来的名字,例如传张三 name就是张三 -->
                            <p>我叫:{{ $route.params.name }}</p>

                            <!-- $route.query的作用是接收url上 ?age=18 这样的参数 例如 router.html#/user/张三?age=18 -->
                            <p>我今年:{{ $route.query.age }} 岁了</p>

                            <div>
                                <!-- append是为了给下面的children子路由传数据 -->
                                <router-link to="more" append> 更多信息 </router-link>
                            </div>
                            
                            <!-- 这个router-view对应的就是children里的template -->
                            <router-view></router-view>
                        </div>`
                    },
                    children:[
                        {
                            path: 'more',
                            component: {
                                template:`
                                <div>
                                用户:{{ $route.params.name }} 的详细信息 abcd1234
                                </div>
                                `
                            }
                        }
                    ]
                }
                
            ];

            const vRouter = new VueRouter({
                routes: routesArr // 这里要写routes ,而不是routers,不然 <router-view> 没数据
            })

            new Vue({
                el: '#div1',
                router: vRouter,
                methods: {
                    pushUser: function(){   
                        
                        // this.$router这个方法遍历不到,但可以直接使用
                        this.$router.push({
                            name: 'user',   // 和51行配合使用的,二者需一致
                            params: {
                                name: '王五'
                            }
                        });
                    }
                }
            })
        }
    </script>
</body> 
</html>

猜你喜欢

转载自www.cnblogs.com/carol1987/p/10482783.html