Vuet.js是什麼?
Vuet.js是給Vue.js提供狀態管理的一個工具,與vuex不同,它是一種崇尚規則定製的狀態管理模式。事先將狀態更新的規則寫好,然後將規則注入到元件中,然後狀態按照預訂的規則來進行更新。github:
Vuet.js
主動型和被動型規則
Vuet.js內建了life
、manual
、need
、once
、route
這幾種常見的規則,除了manual
規則外,其他都是屬於主動型更新規則,在達到一定的條件上會自動觸發狀態更新。
life
描述: 每次都會在元件的beforeCreate鉤子中呼叫一次更新,元件銷燬時在destroyed鉤子,狀態會被重置,恢復到初始狀態
在一個父元件中,想和自己的子子元件進行通訊,但是又不希望父元件銷燬之後,原來的狀態還在,life
規則就是專門針對這種場景的,在元件銷燬時,模組的狀態也會隨之恢復到初始狀態
manual
manual規則允許將各種更新模組狀態的方法集中起來管理,等待使用者來手動觸發對應的模組更新,比如記錄使用者點選一個按鈕的次數:
<!--index.html-->
<div id="app">
{{ count }}
<button @click="$count.plus">計數</button>
</div>
<script>
// main.js
import Vue from 'vue'
import Vuet, { mapModules, mapRules } from 'vuet'
const vuet = new Vuet({
modules: {
count: {
data () {
return 0
},
manuals: {
plus ({ state }) {
// 允許同步、或者非同步的更新
this.setState(++state)
}
}
}
}
})
export default new Vue({
el: '#app',
vuet, // vuet例項注入到vue例項
mixins: [
mapModules({ count: 'count' }), // 元件連線模組
mapRules({
manual: 'count' // 使用manual規則向元件注入操作模組資料的更新方法
})
]
})
</script>複製程式碼
通過上面的程式碼,就可以得知Vuet.js是天然的支援多元件進行通訊,總之它是簡單的,敏捷的。manual
規則預設以$模組名稱
將方法集合注入到元件中,使得程式碼在閱讀方面會更友好,更通俗易懂,同時程式碼也會更優雅。
need
描述: 每次都會在元件的beforeCreate鉤子中呼叫一次更新
比如有一個訊息的數量,我希望每次開啟訊息頁面的時候,訊息數量都能自動更新,這種場景使用need
規則就再合適不過了
once
描述: 僅第一次在元件的beforeCreate鉤子中呼叫一次更新,之後在任何元件都不會再進行更新
比如你A、B、C三個頁面,都需要選擇省市區,而這些資料幾乎是不可變的,所以之後就沒有再必要進行更新了。once
的規則就能幫你節省了不必要的請求,幫你優化程式
route
哈哈,這個篇幅有點大,等下次專門開篇文章進行講解。
總結
vuet允許你將有規律的狀態更新,封裝成一種規則,從而提升你的開發效率,比如說需要定時向伺服器更新訊息,這也是一種規則,下次有時間,我們可以專門寫這樣的一個規則。