最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue動態(tài)面包屑功能的實現方法

 更新時間:2019年07月01日 10:13:19   作者:六小登登  
面包屑功能是我們在項目中經常遇到的功能,今天小編使用Element-UI 進行實現在vue項目中實現面包屑功能,具體實現方式大家跟隨小編一起學習吧

面包屑應該是我們在項目中經常使用的一個功能,一般情況下它用來表示我們當前所處的站點位置,也可以幫助我們能夠更快的回到上個層級。

今天我們就來聊聊如何在 Vue 的項目中實現面包屑功能。以下案例都是使用 Element-UI 進行實現。

最笨的方式

首先我們想到的最笨的方法就是在每個需要面包屑的頁面中固定寫好。

<template>
 <div class="example-container">
  <el-breadcrumb separator="/">
   <el-breadcrumb-item
    v-for="(item,index) in breadList"
    :key="index"
    :to="{ path: item.path }"
   >{{item.name}}</el-breadcrumb-item>
  </el-breadcrumb>
 </div>
</template>
<script>
export default {
 name: "Example",
 data() {
  return {
   breadList: [{
     name: "首頁",
     path: "/home"
    }, {
     name: "系統設置",
     path: "/setting"
    }, {
     name: "用戶管理",
     path: "/setting/usermanage"
    }]
  };
 }
};
</script>

如果按照上述方式去實行的話,雖然我們可以完成面包屑的功能,但是它不夠靈活,在每個需要的頁面添加,帶來的維護成本是巨大的。

最主要的是你們的產品天天變需要咋辦,還不累死。有人說登哥我就喜歡這么改,只有這樣我才會有工作量。

好吧那當我沒說,但是我勸你善良,登哥勸你一句,把那些大量重復的工作盡可能的趕緊做完,剩下的時間你才能自由安排,進行充能呀。

否則,你拿什么進步?普通的人總是喜歡抱怨沒有時間,而優(yōu)秀的人就是這么把時間省下來的。他們知道什么事情重要,什么事情不重要。

不過還是有人會說我就想安安靜靜寫寫代碼,其他的我不想。那也行,不過這樣寫顯然不夠逼格。

利用 路由元信息

上面的方法,非常的不夠逼格,顯然不是我們想要的,那我們再來看看第二種實現方式。

我們可以把路徑結構配置在 Route meta 屬性中。

const router = new Router({
 routes: [{
   path: '/example',
   name: 'example',
   component: Example,
   meta: {
    breadList: [{
      name: "首頁",
      path: "/home"
     }, {
      name: "系統設置",
      path: "/setting"
     }, {
      name: "用戶管理",
      path: "/setting/usermanage"
     }]
   }
  }
 ]
});
export default router;

然后我們直接在頁面中使用計算屬性獲取數據。

<template>
 //...省略
</template>
<script>
export default {
 name: "Example",
 computed: {
  breadList() {
   return this.$route.meta.breadList || [];
  }
 }
};
</script>

這樣也能實現我要想的效果,但是這個還是顯得比較冗余,路由數據已經定義好一次結構,還要加上一個專門的面包屑數據,造成代碼的重復,還是不夠逼格。

那接下來登哥教你一招比較有逼格的。準備好小本本記下來。

路由對象 matched 屬性

首先我們先來看看官方對 matched 的介紹。

matched:返回一個數組,包含當前路由的所有嵌套路徑片段的路由記錄 。

可以看到當我們定義好路由結構以后,我們就可以獲取到當前頁面的路由記錄。

首先我們先創(chuàng)建一個面包屑的組件。

//Breadcrumb.vue
<script>
export default {
 data() {
  return {
   breadList: [] // 路由集合
  };
 },
 watch: {
  $route() {
   this.getBreadcrumb();
  }
 },
 methods: {
  isHome(route) {
   return route.name === "home";
  },
  getBreadcrumb() {
   let matched = this.$route.matched;
   //如果不是首頁
   if (!this.isHome(matched[0])) {
    matched = [{ path: "/home", meta: { title: "首頁" } }].concat(matched);
   }
   this.breadList = matched;
  }
 },
 created() {
  this.getBreadcrumb();
 }
};
</script>

創(chuàng)建完組件之后,在需要的地方注入即可。如果你的網頁結構布局合理恰當的話只需要一處引用就可以所有網頁使用啦。

真可謂 “一處代碼供全局”。

定義的路由信息如下:

const router = new Router({
 routes: [
  {
   path: '/',
   redirect: '/home'
  },
  {
   path: '/home',
   name: 'home',
   component: Home,
   meta: { title: '首頁' }
  },
  {
   path: '/setting',
   name: "setting",
   component: () => import('./views/setting/Setting.vue'),
   redirect: '/setting/user',
   meta: { title: '系統設置' },
   children: [{
    path: 'user',
    component: () => import('./views/setting/UserMange.vue'),
    name: 'usermanage',
    meta: { title: '用戶管理' }
   }, {
    path: 'message',
    component: () => import('./views/setting/MesMange.vue'),
    name: 'mesmanage',
    meta: { title: '短信管理' }
   }]
  },
  {
   path: '/example',
   name: 'example',
   component: Example,
   meta: { title: '綜合實例' }
  }
 ]
});
export default router;

可以看到我們非常靈活的實現出我們需要的效果。可能這個功能并沒有完善,比如有些頁面不需要怎么辦?

其實只要我們過濾下數據就可以實現,比如利用 meta 不存在時面包屑數據置空,或者增加一個數據標示面包屑的現實隱藏。等等都是一種思路。小伙伴們不妨發(fā)揮自己的想象試試吧。

看十遍不如自己擼一遍。這樣很快就能掌握知識點。最后上下效果圖給大家觀摩。

總結

以上所述是小編給大家介紹的Vue動態(tài)面包屑功能的實現方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!

相關文章

  • VUE+Canvas實現簡單五子棋游戲的全過程

    VUE+Canvas實現簡單五子棋游戲的全過程

    這篇文章主要給大家介紹了關于VUE+Canvas實現簡單五子棋游戲的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-05-05
  • vue-router子路由的實現方式

    vue-router子路由的實現方式

    這篇文章主要介紹了vue-router子路由的實現方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • vue項目中禁用瀏覽器緩存配置案例

    vue項目中禁用瀏覽器緩存配置案例

    這篇文章主要介紹了vue項目中禁用瀏覽器緩存配置案例,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-09-09
  • 如何修改Vue項目運行的IP和端口

    如何修改Vue項目運行的IP和端口

    這篇文章主要介紹了修改Vue項目運行的IP和端口的方法,本文結合示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-02-02
  • vue 每次渲染完頁面后div的滾動條保持在最底部的方法

    vue 每次渲染完頁面后div的滾動條保持在最底部的方法

    下面小編就為大家分享一篇vue 每次渲染完頁面后div的滾動條保持在最底部的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • Vue.js分頁組件實現:diVuePagination的使用詳解

    Vue.js分頁組件實現:diVuePagination的使用詳解

    這篇文章主要介紹了Vue.js分頁組件實現:diVuePagination的使用詳解,需要的朋友可以參考下
    2018-01-01
  • nginx部署訪問vue-cli搭建的項目的方法

    nginx部署訪問vue-cli搭建的項目的方法

    本篇文章主要介紹了nginx部署訪問vue-cli搭建的項目的方法,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • VueX模塊的具體使用(小白教程)

    VueX模塊的具體使用(小白教程)

    這篇文章主要介紹了VueX模塊的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-06-06
  • Vue實現docx/xlsx/pdf等類型文件預覽功能

    Vue實現docx/xlsx/pdf等類型文件預覽功能

    這篇文章主要為大家詳細介紹了如何溧陽Vue實現docx/xlsx/pdf等類型文件預覽功能,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-02-02
  • vue?navbar?tabbar導航條根據位置移動實現定位、顏色過渡動畫效果的代碼

    vue?navbar?tabbar導航條根據位置移動實現定位、顏色過渡動畫效果的代碼

    這篇文章主要介紹了vue?navbar?tabbar導航條根據位置移動實現定位、顏色過渡動畫效果,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-08-08

最新評論

嵩明县| 禄劝| 双鸭山市| 锡林郭勒盟| 峨边| 临泉县| 赤壁市| 十堰市| 白玉县| 康马县| 周口市| 永春县| 浏阳市| 许昌市| 池州市| 桦南县| 交口县| 栾城县| 靖远县| 庄浪县| 碌曲县| 桐乡市| 乌拉特后旗| 武隆县| 吉水县| 武安市| 岐山县| 临武县| 仙游县| 涟源市| 平凉市| 图片| 安塞县| 宁武县| 华池县| 广宁县| 清镇市| 寻甸| 大兴区| 津市市| 阳西县|