vue+Vue Router多級導(dǎo)航切換路由(頁面)

當(dāng)當(dāng)當(dāng)當(dāng)當(dāng)~我又來了辈讶。

在項目里經(jīng)常會遇到側(cè)導(dǎo)航切換頁面的功能。

如果我們將側(cè)導(dǎo)航做成公共組件娄猫,來調(diào)用的話贱除,就會在每一個頁面都引用該組件,在后期維護的時候比較麻煩媳溺,比如改參數(shù)月幌。

所以此文將側(cè)導(dǎo)航做成父頁面組件,將切換的頁面做成子頁面悬蔽,這樣只需調(diào)用一次即可扯躺。大大減少了后期維護的麻煩

涉及功能點

  • 側(cè)導(dǎo)航支持多級
  • Vue Router的使用方法(官方文檔
  • 子父組件的寫法
  • 樣式:elementUI

效果圖

12-19-10_30_14.gif

實現(xiàn)

--- 目錄結(jié)構(gòu)

TIM截圖20181219104229.png

--- Vue Router的使用方法
首先安裝npm install vue-router
然后在main.js中引入

import router from './router'

new Vue({
  el: '#app',
  router,
  components: { App },
  template: '<App/>'
})

--- vue頁面使用Vue Router
App.vue里引用router-view屯阀。
router-view就相當(dāng)于一個容器缅帘,來渲染我們定義的路由

<template>
  <div id="app">
    <router-view></router-view>
  </div>
</template>

最好不要在App.vue里寫太多內(nèi)容轴术,把它作為祖父級展示就可以啦难衰,能預(yù)防新手使用的一些未知錯誤,如打包出錯之類的逗栽。

所以盖袭,我在在App.vue里引用router-view只渲染根頁面,而components/page下新建了一個index.vue頁面彼宠,用來放側(cè)導(dǎo)航和渲染子頁面

<template>
   <div>
       <!--v-sidebar是側(cè)導(dǎo)航-->
       <v-sidebar  ></v-sidebar>
       <div class="content" :style="{height: (this.$store.state.bodyHeight-20) + 'px',overflow:'auto'}">
         <div></div>
           <transition name="move" mode="out-in">
           <!--這里的router-view用來渲染子頁面-->
            <router-view></router-view>    
           </transition>
       </div>
   </div>
</template>
<script>
 //引入側(cè)導(dǎo)航組件
   import vSidebar from '../common/sideMenu.vue';
   export default {
       data() {
           return {}
       },
       components:{
         //注冊側(cè)導(dǎo)航組件
           vSidebar
       },
   }
</script>

到此整個側(cè)導(dǎo)航切換路由的頁面結(jié)構(gòu)已經(jīng)完成了

如果你想了解鳄虱,怎么實現(xiàn)多級導(dǎo)航,那么可以繼續(xù)向下看~

我將路由都提出來寫在了單獨的文件里凭峡,這樣方便統(tǒng)一維護管理
routerindex.js將頁面路由的名字和引用路徑都寫好

import Router from 'vue-router';
Vue.use(Router);
export default new Router(
  {
    routes: [
      {
        path: '/',
        name: 'main', component: main,
        children: [
          {
            path: '/inputDisabled',
            component: resolve => require(['../components/page/input/index.vue'], resolve),
            meta: {title: '禁止輸入'},
          },
          {
            path: '/indexSelect',
            component: resolve => require(['../components/page/input/indexSelect.vue'], resolve),
            meta: {title: 'select聯(lián)動'},
          },
          {
            path: '/loadMoreUp',
            component: resolve => require(['../components/page/loadMore/loadMoreUp.vue'], resolve),
            meta: {title: '下拉刷新'},
          },
        ],
      },
    ]
  })

--- 側(cè)導(dǎo)航來啦~
我用的是elementUI里的導(dǎo)航插件拙已。

注意
菜單數(shù)據(jù)結(jié)構(gòu),我這里寫的是嵌套結(jié)構(gòu)摧冀,父級套子級倍踪。
而不是并級系宫,用標(biāo)識來區(qū)分。

代碼思路就是循環(huán)套循環(huán)

<template>
  <div class="sidebar">
    <el-menu class="sidebar-el-menu" :default-active="onRoutes" :collapse="collapse" unique-opened router
             collapse-transition>
      <template v-for="item in items" v-cloak>
        <template v-if="item.subset.length!==0">
          <el-submenu :index="item.url" :key="item.url">
            <template slot="title">
              <!--<img :src="item.icon"  style="width: 20px;height: 20px"/>-->
              <span slot="title">{{ item.name }}</span>
            </template>
            <el-menu-item v-for="(subItem,i) in item.subset" :key="i" :index="subItem.url">
              <!--<img :src="subItem.icon" style="width: 20px;height: 20px"/>-->
              <span slot="title">{{ subItem.name }}</span>
            </el-menu-item>
          </el-submenu>
        </template>
        <template v-else>
          <el-menu-item :index="item.url" :key="item.url">
            <!--<img :src="item.icon" style="width: 20px;height: 20px"/>-->
            <span slot="title">{{ item.name }}</span>
          </el-menu-item>
        </template>
      </template>
    </el-menu>
  </div>
</template>

<script>
  export default {
    data() {
      return {
        collapse: false,
        items: [{
          name: "elementUI之input",
          url: "",
          subset: [
            {name: "禁止輸入", url: "/inputDisabled", subset: []},
            { name: "select聯(lián)動", url: "/indexSelect",  subset: []
          }]
        }, {name: "手機下拉刷新", url: "/loadMoreUp", subset: []}]
      }
    },
    computed: {
      onRoutes() {
        //當(dāng)前激活菜單的 index
        return this.$route.path.replace('/', '');
      }
    },
  }
</script>

OK 大功告成~
歡迎交流和指正~~

喜歡你就點點贊建车,哈哈哈哈哈哈哈

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末扩借,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子缤至,更是在濱河造成了極大的恐慌潮罪,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件领斥,死亡現(xiàn)場離奇詭異嫉到,居然都是意外死亡,警方通過查閱死者的電腦和手機戒突,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進店門屯碴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人膊存,你說我怎么就攤上這事导而。” “怎么了隔崎?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵今艺,是天一觀的道長。 經(jīng)常有香客問我爵卒,道長虚缎,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任钓株,我火速辦了婚禮实牡,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘轴合。我一直安慰自己创坞,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布受葛。 她就那樣靜靜地躺著题涨,像睡著了一般。 火紅的嫁衣襯著肌膚如雪总滩。 梳的紋絲不亂的頭發(fā)上纲堵,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天,我揣著相機與錄音闰渔,去河邊找鬼席函。 笑死,一個胖子當(dāng)著我的面吹牛冈涧,可吹牛的內(nèi)容都是我干的茂附。 我是一名探鬼主播蝌以,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼何之!你這毒婦竟也來了跟畅?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤溶推,失蹤者是張志新(化名)和其女友劉穎徊件,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蒜危,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡虱痕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了辐赞。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片部翘。...
    茶點故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖响委,靈堂內(nèi)的尸體忽然破棺而出新思,到底是詐尸還是另有隱情,我是刑警寧澤赘风,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布夹囚,位于F島的核電站,受9級特大地震影響邀窃,放射性物質(zhì)發(fā)生泄漏荸哟。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一瞬捕、第九天 我趴在偏房一處隱蔽的房頂上張望鞍历。 院中可真熱鬧,春花似錦肪虎、人聲如沸劣砍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽秆剪。三九已至赊淑,卻和暖如春爵政,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背陶缺。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工钾挟, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人饱岸。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓掺出,卻偏偏與公主長得像徽千,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子汤锨,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,512評論 2 359

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