A vue page stack manager Vue頁面堆棧管理器 vue-page-stackvue
示例展現了通常的前進、後退(有activited)和replace的場景,同時還展現了同一個路由能夠存在多層的效果(輸入必要信息)ios
目前版本尚未通過總體業務的測試,歡迎有一樣需求的進行試用git
預覽github
源碼web
因爲重度使用了Vue全家桶在web App
、公衆號和原生Hybrid開發,因此很天然的會遇到頁面跳轉與回退這方面的問題。vue-router
場景舉例:npm
back
和forward
(微信或者小程序頗有用)嘗試瞭如下方法,可是都沒有達到個人預期小程序
通常是使用兩個router-view
經過route信息和keep-alive控制頁面是否緩存,這樣存在兩個問題:瀏覽器
transition
等動畫曾經在查看cube-ui
的例子的時候,發現他們的例子好像解決了頁面緩存的問題,我借鑑(copy)了他們的處理方式,升級了一下,使用CSS和嵌套route的方式實現了基本的需求。 可是也有缺點:緩存
push
或者forward
的時候從新渲染頁面,Stack中會添加新渲染的頁面back
或者go(負數)
的時候不會從新渲染,從Stack中讀取先前的頁面,會保留好先前的內容狀態,例如表單內容,滾動條滑動的位置等back
或者go(負數)
的時候會把不用的頁面從Stack中移除replace
會更新Stack中頁面信息npm install vue-page-stack
# OR
yarn add vue-page-stack
複製代碼
import Vue from 'vue'
import VuePageStack from 'vue-page-stack';
// vue-router是必須的
Vue.use(VuePageStack, { router });
複製代碼
// App.vue
<template>
<div id="app">
<vue-page-stack>
<router-view ></router-view>
</vue-page-stack>
</div>
</template>
<script>
export default {
name: 'App',
data() {
return {
};
},
components: {},
created() {},
methods: {}
};
</script>
複製代碼
註冊的時候能夠指定VuePageStack的名字和keyName,通常不須要
Vue.use(VuePageStack, { router, name: 'VuePageStack', keyName: 'stack-key' });
複製代碼
想在前進、後退或者特殊路由添加一些動畫,能夠在router-view
的頁面經過watch $route
,經過stack-key-dir(自定義keyName這裏也隨之變化)
參數判斷此時的方向,能夠參考實例
爲何會給路由添加keyName
這個參數,是爲了支持瀏覽器的後退,前進事件,這個特色在微信公衆號和小程序很重要
獲取當前頁面Stack部分參考了keep-alive的部分
念念不忘,必有迴響
這個插件存在我心中好久了,斷斷續續作了很久,終於被我搞定了,真的很是開心。
目前版本尚未通過總體業務的測試,歡迎有一樣需求的進行試用,有任何的意見或者建議,歡迎在 Github 提issue和PR,感謝你的支持和貢獻。
這個插件同時借鑑了vue-navigation和vue-nav,很感謝他們給的靈感。