vue2.0 keep-alive最佳實踐

1.基本用法

vue2.0提供了一個keep-alive組件
用來緩存組件,避免屢次加載相應的組件,減小性能消耗vue

<keep-alive>
<component>
  <!-- 組件將被緩存 -->
</component>
</keep-alive>

有時候 可能須要緩存整個站點的全部頁面,而頁面通常一進去都要觸發請求的
在使用keep-alive的狀況下緩存

<keep-alive><router-view></router-view></keep-alive>

將首次觸發請求寫在created鉤子函數中,就能實現緩存,
好比列表頁,去了詳情頁 回來,仍是在原來的頁面函數

2.緩存部分頁面或者組件

(1)使用router. meta屬性
// 這是目前用的比較多的方式
<keep-alive>
    <router-view v-if="$route.meta.keepAlive"></router-view>
</keep-alive>
<router-view v-if="!$route.meta.keepAlive"></router-view>

router設置性能

... 
  routes: [
    { path: '/', redirect: '/index',  component: Index, meta: { keepAlive: true }},
    {
      path: '/common',
      component: TestParent,
      children: [
        { path: '/test2', component: Test2, meta: { keepAlive: true } } 
      ]
    }
    ....
    // 表示index和test2都使用keep-alive
(2).使用新增屬性inlcude/exclude

2.1.0後提供了include/exclude兩個屬性 能夠針對性緩存相應的組件code

<!-- comma-delimited string -->
<keep-alive include="a,b">
  <component :is="view"></component>
</keep-alive>
<!-- regex (use v-bind) -->
<keep-alive :include="/a|b/">
  <component :is="view"></component>
</keep-alive>

//其中a,b是組件的name

注意:這種方法都是預先知道組件的名稱的component

(2)動態判斷
<keep-alive :include="includedComponents">
  <router-view></router-view>
</keep-alive>

includedComponents動態設置便可router

相關文章
相關標籤/搜索