vue設(shè)置導(dǎo)航欄、側(cè)邊欄為公共頁面的例子
首先,項目結(jié)構(gòu)如下:

想要讓導(dǎo)航欄、側(cè)邊欄變?yōu)楣岔撁?,則要在App.vue頁面中加入。假設(shè)已經(jīng)有了Header.vue和Left.vue,這里就不貼出來了,App.vue代碼如下:
<template>
<div id="app">
<!-- 其他頁 -->
<el-container >
<el-header>
<!-- 導(dǎo)航欄 -->
<header-nav></header-nav>
</el-header>
<el-container>
<el-aside width="250px">
<!-- 側(cè)邊欄 -->
<left></left>
</el-aside>
<el-main>
<!-- Body -->
<router-view></router-view>
</el-main>
</el-container>
</el-container>
<!-- 登錄頁 -->
<router-view ></router-view>
</div>
</template>
<script>
import header from './components/Header.vue';
import left from './components/Left.vue';
export default{
components: {
headerNav: header,
left: left
}
}
</script>
<style>
</style>
此時運行會發(fā)現(xiàn),所有的頁面都被加上了這兩個公共頁面,而實際場景中,我們往往希望登錄頁是不需要導(dǎo)航欄和側(cè)邊欄的,那么就需要規(guī)避掉登錄頁。
這時,就可以采用keep-alive結(jié)合$route.meta來實現(xiàn)這個功能。keep-alive 是 Vue 內(nèi)置的一個組件,可以使被包含的組件保留狀態(tài),或避免重新渲染。$route.meta則可以選擇讓需要的頁面才展示。修改App.vue,如下:
<template>
<div id="app">
<!-- 其他頁 -->
<el-container v-if="$route.meta.keepAlive">
<el-header>
<keep-alive>
<!-- 導(dǎo)航欄 -->
<header-nav></header-nav>
</keep-alive>
</el-header>
<el-container>
<el-aside width="250px">
<!-- 側(cè)邊欄 -->
<keep-alive>
<left></left>
</keep-alive>
</el-aside>
<el-main>
<!-- Body -->
<router-view></router-view>
</el-main>
</el-container>
</el-container>
<!-- 登錄頁 -->
<router-view v-if="!$route.meta.keepAlive"></router-view>
</div>
</template>
<script>
import header from './components/Header.vue';
import left from './components/Left.vue';
export default{
components: {
headerNav: header,
left: left
}
}
</script>
<style>
</style>
index.js代碼如下:
import Vue from 'vue'
import Router from 'vue-router'
import HelloWorld from '@/components/HelloWorld'
import Login from '@/views/Login'
import index from '@/views/index'
import versionList from '@/views/versionList'
Vue.use(Router)
export default new Router({
routes: [
{
path: '/',
name: 'login',
component: Login,
meta: {
keepAlive: false
}
},
{
path: '/index',
name: 'index',
component: index,
meta: {
keepAlive: true
}
},
{
path: '/versionList',
name: 'versionList',
component: versionList,
meta: {
keepAlive: true
}
},
]
})
通過設(shè)置keepAlive的值就可以實現(xiàn)除了登錄頁不展示公共頁面,在其他頁面均展示的功能。
以上這篇vue設(shè)置導(dǎo)航欄、側(cè)邊欄為公共頁面的例子就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
vue項目使用lodash節(jié)流防抖函數(shù)問題解決方案
在lodash函數(shù)工具庫中,防抖 _.debounce 和節(jié)流 _.throttle 函數(shù)在一些頻繁觸發(fā)的事件中比較常用,這篇文章主要介紹了vue項目使用lodash節(jié)流防抖函數(shù)問題與解決,需要的朋友可以參考下2023-10-10
vue監(jiān)聽sessionStorage中值的變化方式
這篇文章主要介紹了vue監(jiān)聽sessionStorage中值的變化方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-07-07
多個vue項目復(fù)用一個node_modules的問題
這篇文章主要介紹了多個vue項目復(fù)用一個node_modules的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-09-09
策略模式實現(xiàn) Vue 動態(tài)表單驗證的方法
策略模式(Strategy Pattern)又稱政策模式,其定義一系列的算法,把它們一個個封裝起來,并且使它們可以互相替換。封裝的策略算法一般是獨立的,策略模式根據(jù)輸入來調(diào)整采用哪個算法。這篇文章主要介紹了策略模式實現(xiàn) Vue 動態(tài)表單驗證,需要的朋友可以參考下2019-09-09
使用sessionStorage解決vuex在頁面刷新后數(shù)據(jù)被清除的問題
localStorage沒有時間期限,除非將它移除,sessionStorage即會話,當(dāng)瀏覽器關(guān)閉時會話結(jié)束,有時間期限,具有自行百度。本文使用的是sessionStorage解決vuex在頁面刷新后數(shù)據(jù)被清除的問題,需要的朋友可以參考下2018-04-04

