vue2.0提供了一個keep-alive組件
用來緩存組件,避免屢次加載相應的組件,減小性能消耗vue
<keep-alive> <component> <!-- 組件將被緩存 --> </component> </keep-alive>
有時候 可能須要緩存整個站點的全部頁面,而頁面通常一進去都要觸發請求的
在使用keep-alive
的狀況下緩存
<keep-alive><router-view></router-view></keep-alive>
將首次觸發請求寫在created
鉤子函數中,就能實現緩存,
好比列表頁,去了詳情頁 回來,仍是在原來的頁面函數
// 這是目前用的比較多的方式 <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.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
<keep-alive :include="includedComponents"> <router-view></router-view> </keep-alive>
includedComponents
動態設置便可router