首先定義路由的時候在meta中標記哪些頁面需要預設快取
我們使用includes指令來快取部分頁面,需要快取的資料儲存在vuex的store中,方便後面動態操作
vuex的store配置:
// vuex的store配置
export default new vuex.store(,
mutations: );
arr.push(name);
state.keepalivecomponents = arr;
},delkeepalive(state, name) )
state.keepalivecomponents = arr;}},
actions: ,
modules:
})
我們在mounted生命週期中判斷當前頁面是否需要快取,需要快取的加入keepalivecomponents陣列中(為什麼在mounted裡,而不是在router.beforeeach裡,後面再說明)
下面**中判斷name都是通過獲取$route.name判斷的,但是includes指令實際要配置的是元件的name屬性,所以要保證元件中name的配置和路由中name的配置一致
這裡用了全域性混入實現
import vue from 'vue'
import store from '@/store'
vue.mixin(
})}})
通過上面的三步,已經實現在路由中配置部分頁面快取
但是專案當中經常會有這種場景:
「首頁(a)」 跳轉到 「列表頁(b)」,希望 「列表頁(b)」 始終被重新整理不快取
但是從 "列表頁(b)"跳轉到 「詳情頁(c)」,再從 「詳情頁(c)」 返回 「列表頁(b)」 時,希望 「列表頁(b)」 是快取的
首先,列表頁預設快取只需要在根據第一章的在路由中配置meta:,就可以了
然後,要實現從某些頁面進入時不快取,可以在頁面路由導航中操作
beforerouteenter(to, from, next)
next();
},
注:這就是為什麼上面要在mounted裡面加快取,而不是在router.beforeeach中做,因為頁面的beforerouteenter是在router.beforeeach之後執行的,這樣會導致清快取後下一次的頁面跳轉也沒有被快取
vue單頁應用頁面快取方案
首先我想到的是方案a 方案一 vue的keep alive元件 具體使用如下 這樣所有的頁面都會進行快取。包裹動態元件時,會快取不活動的元件例項,而不是銷毀它們。和 相似,是乙個抽象元件 它自身不會渲染乙個 dom 元素,也不會出現在父元件鏈中。當元件在 內被切換,它的 activated 和 de...
vue 刪除頁面快取 Vue實現頁面快取
在 使用vue開發時,當進行頁面之間的切換時,上乙個頁面將會被銷毀。但是當我們想節省效能以及保留使用者上次操作的結果或避免ajax重複請求的時候,需要把某些特定的頁面快取下來。在vue中,提供了內建元件keep alive 包裹動態元件時,會快取不活動的元件例項,而不是銷毀它們。和相似,是乙個抽象元...
vue框架搭建
npm install registry npm install g vue cli 注意 如果報錯,大概率是因為之前的vue cli版本未解除安裝導致,需要先解除安裝之前的版本,再重新安裝vue cli npm uninstall g vue clivue versionnpm uninstall...