vue實現(xiàn)側(cè)邊折疊菜單欄手風(fēng)琴效果

在我們做管理后臺亦或是產(chǎn)品流程時扶踊,總是需要一個菜單欄或者導(dǎo)航欄來架起我們的產(chǎn)品架構(gòu)泄鹏,那么,如何用vue實現(xiàn)側(cè)邊折疊導(dǎo)航欄呢姻檀?接下來將一一介紹命满。

                                   請先看效果演示圖。

步驟1:先架構(gòu)整個頁面的布局绣版,撰寫html胶台、css和js
HTML代碼

<template>
    <div id="main">
        <div class="content">
            <!-- 左邊導(dǎo)航欄 -->
            <div class="admin_nav col-lg-3 col-xl-2" v-show="fullWidth">
                <div class = "admin_nav_site">
                    <div class="title">
                        數(shù)據(jù)中心后臺管理
                    </div>
                    <ul v-for="(item,index) in navList" :key="index">
                        <li @click="handleToTitle(index,item)" @mouseenter="changeTitleColor(index)" @mouseleave="removeTitleColor(index)"
                         ref="title" :class="{active:currentSort == index}" class="col-lg-12">
                            <div class="left_icon">
                                <i :class="'iconfont '+item.className"></i>
                            </div>
                            <div class="middle">
                                {{item.title}}
                            </div>
                            <div class="right_icon">
                                <i :class="'iconfont '+item.close"></i>
                            </div>
                        </li>
                        <li v-for="(it,idx) in item.secMenu" :key="idx" v-show="item.isSubShow" class="active1">
                            <router-link :to="it.path" tag="a">{{it.name}}</router-link>
                        </li>
                    </ul>
                </div>

            </div>
            <!-- 右邊內(nèi)容 -->
            <div class="admin_content col-12 col-md-12 col-lg-12 col-xl-10">
                <div class="admin_header">
                    <!-- 導(dǎo)航圖標 -->
                    <div class="H5_item" v-show="!fullWidth">
                        <i class="iconfont icon-daohanglan" @click="make_menu" class-name="H5-menu"></i>
                    </div>
                    <div class="user">
                        <div class="userHead">
                            <span>
                                <img src="../../assets/image/userhead.svg">
                            </span>
                            <span>admin</span>
                        </div>
                        <div class="logOut">
                            <i class="iconfont icon-tuichu"></i>
                        </div>
                    </div>
                </div>
                <div class="admin_body">
                    <keep-alive>
                        <router-view />
                    </keep-alive>
                </div>
            </div>

        </div>

    </div>
</template>

JS代碼

<script>
    import axios from 'axios';

    export default {
        name: 'navigation',
        data() {
            return {
                navList: [{
                        title: '用戶管理',
                        isSubShow: false,
                        className: 'icon-guanliyuan1',
                        close: 'icon-close',
                        up: 'icon-zhedie',
                        secMenu: [
                            {
                            name: '工號管理',
                            path: '/home/navigation-one/user'
                            }, 
                            // {
                            // name: '角色管理',
                            // path: '/home/navigation-one/role'
                            // }, 
                            // {
                            // name: '權(quán)限管理',
                            // path: '/home/navigation-one/user'
                            // }, 
                        ]

                    },
                    {
                        title: '資源管理',
                        isSubShow: false,
                        className: 'icon-ziyuan',
                        close: 'icon-close',
                        up: 'icon-zhedie',
                        secMenu: [
                            {
                                name: '我的收藏',
                                path: '/home/navigation-one/user'
                            },
                            {
                                name: '我的項目',
                                path: '/home/navigation-one/role'
                            }
                        ]

                    },
                    {
                        title: '綜合管理',
                        isSubShow: false,
                        className: 'icon-zonghe',
                        close: 'icon-close',
                        up: 'icon-zhedie',
                        secMenu: [{
                                name: '劃配管理',
                                path: '/home/navigation-one/user'
                            },
                            {
                                name: '數(shù)據(jù)信息',
                                path: '/home/navigation-one/role'
                            }
                        ]

                    },
                    {
                        title: '系統(tǒng)消息',
                        isSubShow: false,
                        className: 'icon-xiaoxi',
                        close: 'icon-close',
                        up: 'icon-zhedie',
                        secMenu: [{
                                name: '實時動態(tài)',
                                path: '/home/navigation-one/user'
                            },
                            {
                                name: '過去動態(tài)',
                                path: '/home/navigation-one/role'
                            }
                        ]
                    }
                ],
                currentSort: 0,
                pagetype: "index",
                fullWidth: true,
                dismenu: true
            }
        },
        methods: {
            active(index) {
                this.currentSort = index;
            },
            changeTitleColor(index) {
                this.currentSort = index;
            },
            removeTitleColor(index) {
                this.currentSort = null;
            },
            handleToTitle(ind, item) {
                this.navList[ind].isSubShow = !this.navList[ind].isSubShow;
                if (this.navList[ind].isSubShow == true) {
                    this.navList[ind].close = 'icon-zhedie';
                } else {
                    this.navList[ind].close = 'icon-close';
                }
            }
        }

    }
</script>

CSS代碼

    #main {
        background: #F0F6FF;
        font-size: 0.16rem;
    }

    #main .content {
        display: flex;
        flex-direction: row;
    }

    .content .admin_nav {
        min-height: 9.37rem;
        max-height: 1.3rem;
        padding: 0 !important;
        background: #364150;
        position: relative;

    }

    .content .admin_nav .admin_nav_site{
        height: 100vh;
    }

    .content .admin_nav .title {
        height: 1.39rem;
        line-height: 1.39rem;
        background: rgba(63, 73, 86, 1);
        color: #FFFFFF;
        text-align: center;
        font-size: 0.18rem;
        display: flex;
        justify-content: center;
    }

    .content .admin_nav .title div {
        padding: 0 0.03rem;
    }

    .content .admin_nav .title div:first-child i {
        font-size: 0.18rem;
    }

    .content .admin_nav ul .active {
        background: rgba(68, 81, 99, 1);
    }

    .content .admin_nav ul .active1 a.router-link-active {
        color: #fff;
    }

    .content .admin_nav ul li {
        height: 0.6rem;
        display: flex;
        flex-direction: column;
        justify-content: center;
        align-items: center;
        font-size: 0.18rem;
    }

    .content .admin_nav ul li a {
        color: #cecdc5;
        cursor: pointer;
    }

    .content .admin_nav ul li:first-child {
        font-size: 0.2rem;
        height: 0.64rem;
        display: flex;
        flex-direction: row;
        align-items: center;
        color: #BEC5C0;
        cursor: pointer;
    }

    .content .admin_nav ul li:first-child div {
        width: 100%;
        height: 100%;
        display: flex;
        justify-content: center;
        align-items: center;
        color: #BEC5C0;
    }

    .content .admin_nav ul li:first-child .left_icon {
        width: 22%;
    }

    .content .admin_nav ul li:first-child .left_icon i {
        color: #1296DB;
    }

    .content .admin_nav ul li:first-child .middle {
        width: 56%;
        display: flex;
        justify-content: flex-start;
    }

    .content .admin_nav ul li:first-child .right_icon {
        width: 22%;
    }

    .admin_nav .admin .middle:hover {
        color: #fff;
    }

    .admin_nav .admin .right_icon i:hover {
        color: #fff;
    }

    .admin_nav .admin .middle.router-link-active {
        color: #fff;
    }

    .content .admin_nav_position {
        position: absolute;
        z-index: 3000;
    }

    .content .admin_content {
        padding: 0 !important;
    }

    .content .admin_content .admin_header {
        width: 100%;
        height: 0.6rem;
        background: #364150;
        display: flex;
        flex-direction: row;
        align-items: center;
        justify-content: space-between;
    }

    .content .admin_content .admin_header .H5_item {
        width: 0.4rem;
        height: 0.4rem;
        border-radius: 0.2rem;
        display: flex;
        justify-content: center;
        align-items: center;
        margin-left: 0.2rem;
    }

    .content .admin_content .admin_header .H5_item i {
        font-size: 0.22rem;
        color: #fff;
    }

    .content .admin_content .admin_header .user {
        width: 100%;
        display: flex;
        align-items: center;
        justify-content: flex-end;
    }

    .content .admin_content .admin_header .user .userHead {
        height: 0.6rem;
        display: flex;
        flex-direction: row;
        align-items: center;
        color: #fff;
        font-size: 0.18rem;
    }

    .content .admin_content .admin_header .user .userHead span {
        padding: 0 0.05rem;
    }

    .content .admin_content .admin_header .user .userHead span:nth-child(1) {
        position: relative;
    }

    .content .admin_content .admin_header .user .userHead span img {
        width: 0.4rem;
        height: 0.4rem;
        border-radius: 50%;
    }

    .content .admin_content .admin_header .user .userHead span input {
        width: 0.4rem;
        height: 0.4rem;
        position: absolute;
        overflow: hidden;
        opacity: 0;
        cursor: pointer;
    }

    .content .admin_content .admin_header .user .logOut {
        color: #fff;
        margin-left: 0.12rem;
        margin-right: 0.5rem;
    }

    .content .admin_content .admin_header .user .logOut i {
        color: #1296DB;
        font-size: 0.24rem;
        cursor: pointer;
    }

    .toggle-cart-enter-active {
        transition: all 0.4s linear;
    }

    .toggle-cart-leave-active {
        transition: all 0.4s linear;
    }

    .toggle-cart-enter {
        transform: translateX(-200%);
    }

    .toggle-cart-leave-active {
        transform: translateX(-200%);
    }

步驟2:撰寫完基本網(wǎng)頁布局和樣式后,對部分細節(jié)進行剖析杂抽。

1诈唬、動態(tài)綁定路徑

<router-link :to="it.path" tag="a">{{it.name}}</router-link>

2、一級菜單缩麸,標題及折疊符號

①通過@mouseenter和@mouseleave事件铸磅,當鼠標移入和移出時,改變標題區(qū)域背景顏色

②通過@click事件,當鼠標點擊時阅仔,顯示二級菜單列表

③利用:class動態(tài)綁定類名吹散,觸發(fā)active方法,修改折疊符號狀態(tài)八酒;綁定圖標類名空民,通過遍歷,修改對應(yīng)圖標

<ul v-for="(item,index) in navList" :key="index">
    <li @click="handleToTitle(index,item)" @mouseenter="changeTitleColor(index)" @mouseleave="removeTitleColor(index)" ref="title" :class="{active:currentSort == index}" class="col-lg-12">
        <div class="left_icon">
            <i :class="'iconfont '+item.className"></i>
        </div>
        <div class="middle">
            {{item.title}}
        </div>
        <div class="right_icon">
            <i :class="'iconfont '+item.close"></i>
        </div>
    </li>
    <li v-for="(it,idx) in item.secMenu" :key="idx" v-show="item.isSubShow" class="active1">
        <router-link :to="it.path" tag="a">{{it.name}}</router-link>
    </li>
</ul>
active(index) {
    this.currentSort = index;
},

changeTitleColor(index) {
    this.currentSort = index;
},

removeTitleColor(index) {
    this.currentSort = null;
},

handleToTitle(ind, item) {
    this.navList[ind].isSubShow = !this.navList[ind].isSubShow;
    if (this.navList[ind].isSubShow == true) {
        this.navList[ind].close = 'icon-zhedie';
    } else {
        this.navList[ind].close = 'icon-close';
    }
}

步驟3:菜單欄完成后羞迷,在網(wǎng)頁端能進行查看界轩,但是還需做一個手機端適配,這樣就達到兩端同步適應(yīng)的效果衔瓮。實現(xiàn)如下:

①對左邊導(dǎo)航欄再撰寫第二套代碼浊猾,并綁定好對應(yīng)的參數(shù)實現(xiàn)顯示和隱藏

②運用vue已有的transition,綁定name值热鞍,實現(xiàn)動畫效果綁定

HTML代碼

<!-- 移動端導(dǎo)航欄 -->
<transition name="toggle-cart">
    <div class="admin_nav admin_nav_position col-8 col-md-5 col-lg-3 col-xl-3" v-show="!fullWidth&&!dismenu">
        <div class="title">
            <div v-show="!fullWidth">
                <i class="iconfont icon-daohanglan" @click="make_menu" class-name="H5-menu"></i>
            </div>
            <div>數(shù)據(jù)中心后臺管理</div>
        </div>
        <ul v-for="(item,index) in navList" :key="index">
            <li @click="handleToTitle(index,item)" @mouseenter="changeTitleColor(index)" @mouseleave="removeTitleColor(index)" ref="title" :class="{active:currentSort == index}">
                <div class="left_icon">
                    <i :class="'iconfont '+item.className"></i>
                </div>
                <div class="middle">
                    {{item.title}}
                </div>
                <div class="right_icon">
                    <i :class="'iconfont '+item.close"></i>
                </div>
            </li>
            <li v-for="(it,idx) in item.secMenu" :key="idx" v-show="item.isSubShow" class="active1">
                <router-link :to="it.path" tag="a">{{it.name}}</router-link>
            </li>
        </ul>
    </div>
</transition>

JS代碼

mounted() {
    window.onresize = () => { //監(jiān)聽屏幕變化
        this.page_width();
    };
    this.page_width();
}葫慎,
methods: {
    make_menu() { //點擊導(dǎo)航圖標
        this.dismenu = !this.dismenu;
    },
    page_width() { //獲取屏幕寬度
        var screenWidth = window.screen.width;
        if (screenWidth <= 1024) {
            this.fullWidth = false;
        } else {
            this.fullWidth = true;
        }
    }
}

最后來看下手機端效果:

附上全文代碼:

<template>
    <div id="main">
        <div class="content">
            <!-- 左邊導(dǎo)航欄 -->
            <div class="admin_nav col-lg-3 col-xl-2" v-show="fullWidth">
                <div class = "admin_nav_site">
                    <div class="title">
                        數(shù)據(jù)中心后臺管理
                    </div>
                    <ul v-for="(item,index) in navList" :key="index">
                        <li @click="handleToTitle(index,item)" @mouseenter="changeTitleColor(index)" @mouseleave="removeTitleColor(index)"      
                        ref="title" :class="{active:currentSort == index}" class="col-lg-12">
                            <div class="left_icon">
                                <i :class="'iconfont '+item.className"></i>
                            </div>
                            <div class="middle">
                                {{item.title}}
                            </div>
                            <div class="right_icon">
                                <i :class="'iconfont '+item.close"></i>
                            </div>
                        </li>
                        <li v-for="(it,idx) in item.secMenu" :key="idx" v-show="item.isSubShow" class="active1">
                            <router-link :to="it.path" tag="a">{{it.name}}</router-link>
                        </li>
                    </ul>
                </div>

                <!-- 管理員端 -->
                <!-- <ul class="admin">
                    <li class="col-lg-12">
                        <div class="left_icon">
                            <i class="iconfont icon-guanliyuan1"></i>
                        </div>
                        <router-link to="/admin/administrator/secadmin" tag="div" class="middle">管理員端</router-link>
                        <div class="right_icon">
                            <i class="iconfont icon-jinru"></i>
                        </div>
                    </li>
                </ul> -->
            </div>
            <!-- 右邊內(nèi)容 -->
            <div class="admin_content col-12 col-md-12 col-lg-12 col-xl-10">
                <div class="admin_header">
                    <!-- 導(dǎo)航圖標 -->
                    <div class="H5_item" v-show="!fullWidth">
                        <i class="iconfont icon-daohanglan" @click="make_menu" class-name="H5-menu"></i>
                    </div>
                    <div class="user">
                        <div class="userHead">
                            <span>
                                <img src="../../assets/image/userhead.svg">
                            </span>
                            <span>admin</span>
                        </div>
                        <div class="logOut">
                            <i class="iconfont icon-tuichu"></i>
                        </div>
                    </div>
                </div>
                <div class="admin_body">
                    <keep-alive>
                        <router-view />
                    </keep-alive>
                </div>
            </div>
            <!-- 移動端導(dǎo)航欄 -->
            <transition name="toggle-cart">
                <div class="admin_nav admin_nav_position col-8 col-md-5 col-lg-3 col-xl-3" v-show="!fullWidth&&!dismenu">
                    <div class="title">
                        <div v-show="!fullWidth">
                            <i class="iconfont icon-daohanglan" @click="make_menu" class-name="H5-menu"></i>
                        </div>
                        <div>數(shù)據(jù)中心后臺管理</div>
                    </div>
                    <ul v-for="(item,index) in navList" :key="index">
                        <li @click="handleToTitle(index,item)" @mouseenter="changeTitleColor(index)" @mouseleave="removeTitleColor(index)"
                         ref="title" :class="{active:currentSort == index}">
                            <div class="left_icon">
                                <i :class="'iconfont '+item.className"></i>
                            </div>
                            <div class="middle">
                                {{item.title}}
                            </div>
                            <div class="right_icon">
                                <i :class="'iconfont '+item.close"></i>
                            </div>
                        </li>
                        <li v-for="(it,idx) in item.secMenu" :key="idx" v-show="item.isSubShow" class="active1">
                            <router-link :to="it.path" tag="a">{{it.name}}</router-link>
                        </li>
                    </ul>
                </div>
            </transition>
        </div>
    </div>
</template>

<script>
    import axios from 'axios';

    export default {
        name: 'navigation-1',
        data() {
            return {
                token: '',
                navList: [{
                        title: '用戶管理',
                        isSubShow: false,
                        className: 'icon-guanliyuan1',
                        close: 'icon-close',
                        up: 'icon-zhedie',
                        secMenu: [
                            {
                            name: '工號管理',
                            path: '/home/navigation-one/user'
                            }, 
                            // {
                            // name: '角色管理',
                            // path: '/home/navigation-one/role'
                            // }, 
                            // {
                            // name: '權(quán)限管理',
                            // path: '/home/navigation-one/user'
                            // }, 
                        ]

                    },
                    {
                        title: '資源管理',
                        isSubShow: false,
                        className: 'icon-ziyuan',
                        close: 'icon-close',
                        up: 'icon-zhedie',
                        secMenu: [
                            {
                                name: '我的收藏',
                                path: '/home/navigation-one/user'
                            },
                            {
                                name: '我的項目',
                                path: '/home/navigation-one/role'
                            }
                        ]

                    },
                    {
                        title: '綜合管理',
                        isSubShow: false,
                        className: 'icon-zonghe',
                        close: 'icon-close',
                        up: 'icon-zhedie',
                        secMenu: [{
                                name: '劃配管理',
                                path: '/home/navigation-one/user'
                            },
                            {
                                name: '數(shù)據(jù)信息',
                                path: '/home/navigation-one/role'
                            }
                        ]

                    },
                    {
                        title: '系統(tǒng)消息',
                        isSubShow: false,
                        className: 'icon-xiaoxi',
                        close: 'icon-close',
                        up: 'icon-zhedie',
                        secMenu: [{
                                name: '實時動態(tài)',
                                path: '/home/navigation-one/user'
                            },
                            {
                                name: '過去動態(tài)',
                                path: '/home/navigation-one/role'
                            }
                        ]
                    }
                ],
                currentSort: 0,
                pagetype: "index",
                fullWidth: true,
                dismenu: true
            }
        },
        mounted() {
            window.onresize = () => { //監(jiān)聽屏幕變化
                this.page_width();
            };
            this.page_width();
        },
        methods: {
            active(index) {
                this.currentSort = index;
            },
            changeTitleColor(index) {
                this.currentSort = index;
            },
            removeTitleColor(index) {
                this.currentSort = null;
            },
            handleToTitle(ind, item) {
                this.navList[ind].isSubShow = !this.navList[ind].isSubShow;
                if (this.navList[ind].isSubShow == true) {
                    this.navList[ind].close = 'icon-zhedie';
                } else {
                    this.navList[ind].close = 'icon-close';
                }
            },
            make_menu() { //點擊導(dǎo)航圖標
                this.dismenu = !this.dismenu;
            },
            page_width() { //獲取屏幕寬度
                var screenWidth = window.screen.width;
                if (screenWidth <= 1024) {
                    this.fullWidth = false;
                } else {
                    this.fullWidth = true;
                }
            }
        }

    }
</script>

<style scoped>
    #main {
        background: #F0F6FF;
        font-size: 0.16rem;
    }

    #main .content {
        display: flex;
        flex-direction: row;
    }

    .content .admin_nav {
        min-height: 9.37rem;
        max-height: 1.3rem;
        padding: 0 !important;
        background: #364150;
        position: relative;

    }

    .content .admin_nav .admin_nav_site{
        height: 100vh;
    }

    .content .admin_nav .title {
        height: 1.39rem;
        line-height: 1.39rem;
        background: rgba(63, 73, 86, 1);
        color: #FFFFFF;
        text-align: center;
        font-size: 0.18rem;
        display: flex;
        justify-content: center;
    }

    .content .admin_nav .title div {
        padding: 0 0.03rem;
    }

    .content .admin_nav .title div:first-child i {
        font-size: 0.18rem;
    }

    .content .admin_nav ul .active {
        background: rgba(68, 81, 99, 1);
    }

    .content .admin_nav ul .active1 a.router-link-active {
        color: #fff;
    }

    .content .admin_nav ul li {
        height: 0.6rem;
        display: flex;
        flex-direction: column;
        justify-content: center;
        align-items: center;
        font-size: 0.18rem;
    }

    .content .admin_nav ul li a {
        color: #cecdc5;
        cursor: pointer;
    }

    .content .admin_nav ul li:first-child {
        font-size: 0.2rem;
        height: 0.64rem;
        display: flex;
        flex-direction: row;
        align-items: center;
        color: #BEC5C0;
        cursor: pointer;
    }

    .content .admin_nav ul li:first-child div {
        width: 100%;
        height: 100%;
        display: flex;
        justify-content: center;
        align-items: center;
        color: #BEC5C0;
    }

    .content .admin_nav ul li:first-child .left_icon {
        width: 22%;
    }

    .content .admin_nav ul li:first-child .left_icon i {
        color: #1296DB;
    }

    .content .admin_nav ul li:first-child .middle {
        width: 56%;
        display: flex;
        justify-content: flex-start;
    }

    .content .admin_nav ul li:first-child .right_icon {
        width: 22%;
    }

    .admin_nav .admin .middle:hover {
        color: #fff;
    }

    .admin_nav .admin .right_icon i:hover {
        color: #fff;
    }

    .admin_nav .admin .middle.router-link-active {
        color: #fff;
    }

    .content .admin_nav_position {
        position: absolute;
        z-index: 3000;
    }

    .content .admin_content {
        padding: 0 !important;
    }

    .content .admin_content .admin_header {
        width: 100%;
        height: 0.6rem;
        background: #364150;
        display: flex;
        flex-direction: row;
        align-items: center;
        justify-content: space-between;
    }

    .content .admin_content .admin_header .H5_item {
        width: 0.4rem;
        height: 0.4rem;
        border-radius: 0.2rem;
        display: flex;
        justify-content: center;
        align-items: center;
        margin-left: 0.2rem;
    }

    .content .admin_content .admin_header .H5_item i {
        font-size: 0.22rem;
        color: #fff;
    }

    .content .admin_content .admin_header .user {
        width: 100%;
        display: flex;
        align-items: center;
        justify-content: flex-end;
    }

    .content .admin_content .admin_header .user .userHead {
        height: 0.6rem;
        display: flex;
        flex-direction: row;
        align-items: center;
        color: #fff;
        font-size: 0.18rem;
    }

    .content .admin_content .admin_header .user .userHead span {
        padding: 0 0.05rem;
    }

    .content .admin_content .admin_header .user .userHead span:nth-child(1) {
        position: relative;
    }

    .content .admin_content .admin_header .user .userHead span img {
        width: 0.4rem;
        height: 0.4rem;
        border-radius: 50%;
    }

    .content .admin_content .admin_header .user .userHead span input {
        width: 0.4rem;
        height: 0.4rem;
        position: absolute;
        overflow: hidden;
        opacity: 0;
        cursor: pointer;
    }

    .content .admin_content .admin_header .user .logOut {
        color: #fff;
        margin-left: 0.12rem;
        margin-right: 0.5rem;
    }

    .content .admin_content .admin_header .user .logOut i {
        color: #1296DB;
        font-size: 0.24rem;
        cursor: pointer;
    }

    .toggle-cart-enter-active {
        transition: all 0.4s linear;
    }

    .toggle-cart-leave-active {
        transition: all 0.4s linear;
    }

    .toggle-cart-enter {
        transform: translateX(-200%);
    }

    .toggle-cart-leave-active {
        transform: translateX(-200%);
    }
</style>

注:

1、css樣式中的rem換算成px為對應(yīng)的rem值*100,如:font-size:0.24rem薇宠;=> font-size:24px幅疼;

2、文章中涉及到的iconfont類名是因為引用了阿里圖標昼接,如遇到不知道如何引用的可以翻閱博文→ https://blog.csdn.net/weixin_44803753/article/details/113423633

3爽篷、關(guān)于router-link對應(yīng)的跳轉(zhuǎn),如有小伙伴不太清楚如何使用vue-router配置路由的可以翻閱博文→https://blog.csdn.net/weixin_44803753/article/details/113436625

Ending(〃'▽'〃)慢睡!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末逐工,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子漂辐,更是在濱河造成了極大的恐慌泪喊,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件髓涯,死亡現(xiàn)場離奇詭異袒啼,居然都是意外死亡,警方通過查閱死者的電腦和手機纬纪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進店門蚓再,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人包各,你說我怎么就攤上這事摘仅。” “怎么了问畅?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵娃属,是天一觀的道長六荒。 經(jīng)常有香客問我,道長矾端,這世上最難降的妖魔是什么掏击? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮秩铆,結(jié)果婚禮上铐料,老公的妹妹穿的比我還像新娘。我一直安慰自己豺旬,他們只是感情好,可當我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布柒凉。 她就那樣靜靜地躺著族阅,像睡著了一般。 火紅的嫁衣襯著肌膚如雪膝捞。 梳的紋絲不亂的頭發(fā)上坦刀,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天,我揣著相機與錄音蔬咬,去河邊找鬼鲤遥。 笑死,一個胖子當著我的面吹牛林艘,可吹牛的內(nèi)容都是我干的盖奈。 我是一名探鬼主播,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼狐援,長吁一口氣:“原來是場噩夢啊……” “哼钢坦!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起啥酱,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤爹凹,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后镶殷,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體禾酱,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年绘趋,在試婚紗的時候發(fā)現(xiàn)自己被綠了颤陶。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡陷遮,死狀恐怖指郁,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情拷呆,我是刑警寧澤闲坎,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布疫粥,位于F島的核電站,受9級特大地震影響腰懂,放射性物質(zhì)發(fā)生泄漏梗逮。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一绣溜、第九天 我趴在偏房一處隱蔽的房頂上張望慷彤。 院中可真熱鬧,春花似錦怖喻、人聲如沸底哗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽跋选。三九已至,卻和暖如春哗蜈,著一層夾襖步出監(jiān)牢的瞬間前标,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工距潘, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留炼列,地道東北人。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓音比,卻偏偏與公主長得像俭尖,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子洞翩,可洞房花燭夜當晚...
    茶點故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內(nèi)容