Vue路由1

路由的基本使用

<body>
    <div id='app'>
        <!-- 5. 预留展示区域 -->
        <router-view></router-view>
    </div>

    <template id="isIndex">
        <p>首页</p>
    </template>
</body>
<script src="../js/vue.js"></script>
<!-- 1. 引入js文件,注意路由的js文件要放在Vue的js文件下方 -->
<script src="https://cdn.jsdelivr.net/npm/vue-router@3.5.1/dist/vue-router.min.js"></script>
<script>
    /* 
        前后端路由区别
            1	后端路由:对于普通的网站,所有的超链接都是URL地址,所有的URL地址都对应服务器上对应的资源
            2	前端路由:对于单页面应用程序来说,主要通过URL中的hash(#号)来实现不同页面之间的切换,同时,hash有一个特点:HTTP请求中不会包含hash相关的内容;所以,单页面程序中的页面跳转主要用hash实现;
            3	在单页面应用程序中,这种通过hash改变来切换页面的方式,称作前端路由(区别于后端路由)

    */

    /* 
        1 引入js文件,这个js需要放在vue的js后面,自动安装(提供了一个VueRouter的构造方法)
        2 创建路由new VueRouter(),接受的参数是一个对象
        3 在实例化的对象里配置属性routes:[],这个数组里的对象包含path属性和component属性
        4 path属性是url的地址,component属性就是显示的组件(传组件的对象)
        5 创建的路由需要和vue实例关联一下
        6 路由到的组件显示在哪个位置<router-view></router-view>
    */
    let myindex = {
        template: '#isIndex'
    }

    /* 2. 创造一个路由实例 */
    const myRouter = new VueRouter({
        /* 3. 创造映射关系 */
        routes: [
            {
                path: '/index',
                component: myindex,
            },
        ]
    })

    const vm = new Vue({
        /* 4. 挂载到Vue实例上 */
        router: myRouter,
        el: '#app',
        data: {
        },
        methods: {
        }
    })
</script>

结果如下:
在这里插入图片描述

路由的跳转及重定向

<body>
    <div id='app'>
        <router-view></router-view>
    </div>

    <template id="indexOk">
        <div>
            <p>首页</p>
            <!-- router-link标签进行路由跳转 -->
            <!-- 
                其内含有to属性,to的属性值是个方法,其内有两个属性
                    非强制性传参:
                        path: 决定页面跳转到的路由
                        query: 决定跳转时携带的参数,可以没有
                    强制性传参:(若是不传参,页面能正常跳转但页面刷新时将不再显示页面)
                        name: 决定页面跳转到的路由
                        params: 决定跳转时携带的参数,可以没有
            -->
            <!-- 声明式跳转方法 -->
            <router-link :to="detailNeed">走!去详情页</router-link>
            <router-link :to="myNeed">走!去个人页面</router-link>
            <!-- 函数式跳转方法 -->
            <button @click="goDetail">go去详情页</button>
            <button @click="goMy">go去个人页面</button>
        </div>
    </template>

    <template id="detailOk">
        <p>详情</p>
    </template>

    <template id="myOk">
        <p>个人页面</p>
    </template>
</body>
<script>

    let isIndex = {
        template: '#indexOk',
        data() {
            return {
                detailNeed: {
                    path: '/detail',
                    query: {
                        courseId: 110,
                        name: '你犯事儿了,你知道么'
                    }
                },
                myNeed: {
                    name: '/my',
                    params: {
                        courseId: 120,
                        name: '出人命啦,哎呀~!'
                    }
                }
            }
        },
        methods: {
            goDetail() {
                this.$router.push({
                    path: '/detail',
                    query: {
                        courseId: 110,
                        name: '你犯事儿了,你知道么'
                    }
                })
            },
            goMy() {
                this.$router.push({
                    name: '/my',
                    params: {
                        courseId: 120,
                        name: '出人命啦,哎呀~!'
                    }
                })
            }
        }
    }

    let isDetail = {
        template: '#detailOk',
        created() {
            console.log(this);
            console.log(this.$route.query.courseId);
            console.log(this.$route.query.name);
        }
    }

    let isMy = {
        template: '#myOk',
        created() {
            console.log(this);
            console.log(this.$route.params.courseId);
            console.log(this.$route.params.name);
        }
    }

    const myRoute = new VueRouter({
        routes: [
            {
                /* 
                路由重定向, 有两个自带属性
                    path: 遇到其属性值的路由直接跳转
                    redirect: 重定向的目标路由
                */
                path: '/',
                redirect: '/index'

            },
            {
                path: '/index',
                component: isIndex
            },
            {
                path: '/detail',
                component: isDetail
            },
            // 强制传值跳转的路由写法:
            {
                name: '/my',
                // 传递多个值需要&符号作分割
                path: '/my/:courseId&:name',
                component: isMy
            }
        ]
    })

    const vm = new Vue({
        el: '#app',
        router: myRoute,
        data: {
        },
        methods: {
        }
    })
</script>

结果如下:
首页:
在这里插入图片描述
详情页:
在这里插入图片描述

个人页面:
在这里插入图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值