Vue-Router路由学习

//获取当前路由地址
this.$route.path

//编程式路由
this.$router.push("路由地址");

简单使用

<body>
    <div id="app">

        <!--2. 添加路由链接-->
        <router-link to="/user">User</router-link>
        <router-link to="/register">Register</router-link>

        <!--3. 添加路由占位符-->
        <router-view> </router-view>

    </div>
</body>

<!--1. 引入库文件-->
<script src="node_modules/vue/dist/vue.js"></script>
<script src="node_modules/vue-router/dist/vue-router.js"></script>

<script type="text/javascript">

    // 4. 创建路由组件
    var componentRouter1 = {
     
     
        template: "<h1>我是路由1 - 用户</h1>"
    }
    var componentRouter2 = {
     
     
        template: "<h1>我是路由2 - 注册</h1>"
    }

    // 5. 配置规则并创建路由对象
    var myRouter = new VueRouter({
     
     
        routes: [
            // componet属性需要的是组件对象
            {
     
     path:"/user", component: componentRouter1},
            {
     
     path:"/register", component: componentRouter2}
        ]
    })


    var vue = new Vue({
     
     

        // 6. 挂载路由
        el: "#app",
        router: myRouter

    })

</script>


路由重定向

<script>
     var myRouter = new VueRouter({
     
     
            routes: [
                //当用户访问/路径时,强制跳转到/user这个路由地址
                {
     
     path:"/", redirect:"/user"},
                {
     
     path:"/user", component: componentRouter1},
                {
     
     path:"/register", component: componentRouter2}
            ]
        })
</script>


嵌套路由

<!--1. 引入库文件-->
<script src="node_modules/vue/dist/vue.js"></script>
<script src="node_modules/vue-router/dist/vue-router.js"></script>

<script type="text/javascript">

    // 4. 创建路由组件
    var componentRouter1 = {
     
     
        template: "<h1>我是路由1 - 用户</h1>"
    }

    var componentRouter2 = {
     
     
        template: `
            <div>
                <h1>我是路由2 - 注册</h1>
                <hr>
                <router-link to="/register/firstSon">子路由1</router-link>
                <router-link to="/register/secondSon">子路由2</router-link>
                <router-view></router-view>
            </div>
           `
    }

    var sonRouter1 = {
     
     
        template:"<h1>我是路由2下的子路由1内容</h1>"
    }
    var sonRouter2 = {
     
     
        template:"<h1>我是路由2下的子路由2内容</h1>"
    }

    // 5. 配置规则并创建路由对象
    var myRouter = new VueRouter({
     
     
        routes: [
            //当用户访问/路径时,强制跳转到/user这个路由地址
            {
     
     path:"/", redirect:"/user"},
            {
     
     path:"/user", component: componentRouter1},
            {
     
     
                path:"/register",
                component: componentRouter2,
                children:[ {
     
     
                    path: "/register/firstSon",
                    component: sonRouter1
                },{
     
     
                    path: "/register/secondSon",
                    component: sonRouter2
                } ]
            }
        ]
    })


    var vue = new Vue({
     
     

        // 6. 挂载路由
        el: "#app",
        router: myRouter

    })

</script>


动态路由

<javascript>
    // 伪代码
    routers: [
        { path : "/user/1"  component: userComp },
        { path : "/user/2"  component: userComp },
        { path : "/user/3"  component: userComp },        
    ]
</javascropt>


<javascript>
    var vue = new Vue({
        routers:[{
            {path:"/iser/:id", component: userComp }
        }]
    })
</javascropt>


<body>
    <div id="app">

        <!--2. 添加路由链接-->
        <router-link to="/user/1">User</router-link>
        <router-link to="/user/2">Register</router-link>

        <!--3. 添加路由占位符-->
        <router-view>

        </router-view>

    </div>
</body>

<!--1. 引入库文件-->
<script src="node_modules/vue/dist/vue.js"></script>
<script src="node_modules/vue-router/dist/vue-router.js"></script>

<script type="text/javascript">

    // 4. 创建路由组件 - 获取动态路由的数据
    var componentRouter = {
     
     
        template: "<h1>我是路由1地址:user/{
     
     {$route.params.id}}</h1>"
    }

    // 5. 配置规则并创建路由对象
    var myRouter = new VueRouter({
     
     
        routes: [
            //动态路由
            {
     
     path:"/", redirect:"/user/1"},
            {
     
     path:"/user/:id", component: componentRouter},
        ]
    })


    var vue = new Vue({
     
     

        // 6. 挂载路由
        el: "#app",
        router: myRouter

    })

</script>


<body>
    <div id="app">

        <!--2. 添加路由链接-->
        <router-link to="/user/1">User</router-link>
        <router-link to="/user/2">Register</router-link>

        <!--3. 添加路由占位符-->
        <router-view>

        </router-view>

    </div>
</body>

<!--1. 引入库文件-->
<script src="node_modules/vue/dist/vue.js"></script>
<script src="node_modules/vue-router/dist/vue-router.js"></script>

<script type="text/javascript">

    // 4. 创建路由组件
    var componentRouter = {
     
     
        template: "<h1>我是路由1地址:user/{
     
     {id}}</h1>",
        props: {
     
     
            id: {
     
     
                default: 0,
                type: String
            }
        }
    }

    // 5. 配置规则并创建路由对象
    var myRouter = new VueRouter({
     
     
        routes: [
            //当用户访问/路径时,强制跳转到/user这个路由地址
            {
     
     path:"/", redirect:"/user/1"},
            {
     
     path:"/user/:id", component: componentRouter, props: true},
        ]
    })


    var vue = new Vue({
     
     

        // 6. 挂载路由
        el: "#app",
        router: myRouter

    })

</script>


<body>
    <div id="app">

        <!--2. 添加路由链接-->
        <router-link to="/user/1">User</router-link>
        <router-link to="/user/2">Register</router-link>

        <!--3. 添加路由占位符-->
        <router-view>

        </router-view>

    </div>
</body>

<!--1. 引入库文件-->
<script src="node_modules/vue/dist/vue.js"></script>
<script src="node_modules/vue-router/dist/vue-router.js"></script>

<script type="text/javascript">

    // 4. 创建路由组件
    var componentRouter = {
     
     
        template: "<h1>我是路由1地址:user/{
     
     {id}} -- 其他值{
     
     {name}}、{
     
     {age}}</h1>",
        props: ["id", "name", "age"]
    }


    // 5. 配置规则并创建路由对象
    var myRouter = new VueRouter({
     
     
        routes: [
            //当用户访问/路径时,强制跳转到/user这个路由地址
            {
     
     path:"/", redirect:"/user/1"},
            {
     
     
                path:"/user/:id",
                component: componentRouter,
                props: (route) => {
     
     

                    return {
     
     
                        name: 'lrc',
                        age: 20,
                        id: route.params.id
                    }

                }
            }
        ]
    })

    var vue = new Vue({
     
     

        // 6. 挂载路由
        el: "#app",
        router: myRouter

    })

</script>


命名路由

<body>
    <div id="app">

        <!--2. 添加路由链接-->
        <router-link :to="{name:'user', params:{id:1}}">User</router-link>
        <router-link to="/user/2">Register</router-link>

        <!--3. 添加路由占位符-->
        <router-view>

        </router-view>

    </div>
</body>

<!--1. 引入库文件-->
<script src="node_modules/vue/dist/vue.js"></script>
<script src="node_modules/vue-router/dist/vue-router.js"></script>

<script type="text/javascript">

    // 4. 创建路由组件
    var componentRouter = {
     
     
        template: "<h1>我是路由{
     
     {id}}地址:user/{
     
     {id}} -- 其他值{
     
     {name}}、{
     
     {age}}</h1>",
        props: ["id", "name", "age"]
    }


    // 5. 配置规则并创建路由对象
    var myRouter = new VueRouter({
     
     
        routes: [
            //当用户访问/路径时,强制跳转到/user这个路由地址
            {
     
     path:"/", redirect:"/user/1"},
            {
     
     
                path:"/user/:id",
                name: "user",
                component: componentRouter,
                props: (route) => {
     
     

                    return {
     
     
                        name: 'lrc',
                        age: 20,
                        id: route.params.id
                    }

                }
            }
        ]
    })

    var vue = new Vue({
     
     

        // 6. 挂载路由
        el: "#app",
        router: myRouter

    })

</script>


编程式导航

<script type="text/javascript">

    // 4. 创建路由组件
    var componentRouter = {
     
     
        template: `
            <div>
                <h1>我是路由{
      
      {id}}地址:user/{
      
      {id}} -- 其他值{
      
      {name}}、{
      
      {age}}</h1>
                <button v-on:click="jump">跳转到/user/2组件</button>
            </div>`,
        props: ["id", "name", "age"],
        methods: {
     
     
            jump : function() {
     
     
                this.$router.push("/user/2")
            }
        }
    }


    // 5. 配置规则并创建路由对象
    var myRouter = new VueRouter({
     
     
        routes: [
            //当用户访问/路径时,强制跳转到/user这个路由地址
            {
     
     path:"/", redirect:"/user/1"},
            {
     
     
                path:"/user/:id",
                name: "user",
                component: componentRouter,
                props: (route) => {
     
     

                    return {
     
     
                        id: route.params.id,
                        name: 'lrc',
                        age: 20
                    }

                }
            }
        ]
    })


    var vue = new Vue({
     
     

        // 6. 挂载路由
        el: "#app",
        router: myRouter,

    })

</script>


路由前置守卫



  //to: 目的
  //form:从哪里来的
  //next() 放行
router.beforeEach((to,from,next)=>{
    
    

  var targetPath = to.path;
  if(targetPath=="/my"){
    
    
    next("/login");    // 跳转到其他路由路径
  }else{
    
    
    next(); //等价于放行
  }
})

おすすめ

転載: blog.csdn.net/weixin_39651356/article/details/105770465