Vue的學(xué)習(xí)筆記-Day4-02(路由的基本使用)

一、什么是路由

1、后端路由:對(duì)于普通的網(wǎng)站,所有的超鏈接都是URL地址,所有的URL地址都對(duì)應(yīng)服務(wù)器上的資源;
2、前端路由:對(duì)于單頁(yè)面應(yīng)用程序來(lái)說(shuō),主要通過(guò)URL中的hash(#號(hào))來(lái)實(shí)現(xiàn)不同頁(yè)面之間的切換,同時(shí),hash有一個(gè)特點(diǎn):HTTP請(qǐng)求中不會(huì)包含hash相關(guān)的內(nèi)容,所以單頁(yè)面程序中的頁(yè)面跳轉(zhuǎn)主要用hash實(shí)現(xiàn);
3、在單頁(yè)面應(yīng)用程序中,這種通過(guò)hash改變來(lái)切換頁(yè)面的方式,稱作前端路由(區(qū)別于后端路由);

二、路由的基本使用

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script src="lib/vue-2.6.10.js"></script>
    <!--安裝vue-router路由模塊-->
    <script src="lib/vue-router.js"></script>
    <style>
        .pointer {
            cursor: pointer;
        }

        .router-link-active, .myActive { /*router-link-active是默認(rèn)提供的激活類名,myActive是自己修改的激活類名*/
            color: red;
            font-weight: 800;
            font-style: italic;
            font-size: 80px;
            text-decoration: underline;
            background-color: green;
        }

        .v-enter,
        .v-leave-to{
            opacity: 0;
            transform: translateX(140px);
        }

        .v-enter-active,
        .v-leave-active{
            transition: .5s;
        }
    </style>
</head>
<body>

<div id="app">
    <!--    <a href="#/login">登錄</a>-->
    <!--    <a href="#/register">注冊(cè)</a>-->

    <!--官方不推薦用a標(biāo)簽來(lái)切換路由,推薦使用router-line-->
    <!--router-link 默認(rèn)是a標(biāo)簽-->
    <router-link class="pointer" to="/login" tag="span">登錄</router-link>
    <router-link to="/register">注冊(cè)</router-link>

    <!--這是vue-router提供的元素,專門(mén)用來(lái)當(dāng)做占位符的,將來(lái)路由規(guī)則匹配到的組件就會(huì)展示到這個(gè)router-view中去-->

    <transition mode="out-in">
        <router-view></router-view>
    </transition>

</div>

<script>
    var login = { //組件模板對(duì)象
        template: '<h1>登錄組件</h1>'
    };

    var register = { //組件模板對(duì)象
        template: '<h1>注冊(cè)組件</h1>'
    };

    /*創(chuàng)建一個(gè)路由對(duì)象,當(dāng)導(dǎo)入vue-router包之后,在window全局對(duì)象中,就有了一個(gè)路由的構(gòu)造函數(shù),叫做VueRouter*/
    //在new路由對(duì)象的時(shí)候,可以為構(gòu)造函數(shù)傳遞一個(gè)配置對(duì)象
    var routerObj = new VueRouter({
        //routes這個(gè)配置對(duì)象中的route表示【路由匹配規(guī)則】的意思
        routes: [ //路由匹配規(guī)則
            //每個(gè)路由規(guī)則都是一個(gè)對(duì)象,每個(gè)規(guī)則對(duì)象必須包含兩個(gè)必須的屬性
            // 屬性1 是path 表示監(jiān)聽(tīng)哪個(gè)鏈接地址
            // 屬性2 是component ,表示如果路由是前面匹配到的path,則展示component屬性對(duì)應(yīng)的那個(gè)組件
            // 注意:component的屬性值,必須是一個(gè)組件模板對(duì)象,不能是組件的引用名稱
            {path: '/', redirect: '/login'},//這里的redirect和Node中的redirect完全是兩碼事
            {path: '/login', component: login},
            {path: '/register', component: register}
        ],
        linkActiveClass: 'myActive',//可以將默認(rèn)的router-link-active類名改為自定義的類名
    });

    var vm = new Vue({
        el: '#app',
        data: {},
        methods: {},
        router: routerObj //將路由規(guī)則對(duì)象注冊(cè)到vm實(shí)例上,用來(lái)監(jiān)聽(tīng)URL地址的變化,然后展示對(duì)應(yīng)的組件
    });
</script>

</body>
</html>
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容