這句話我想每一個搜索過Vuex官網文檔的人都看到過,vue
在學習源碼前,固然要有一些前提條件了。vuex
Vuex咱們一般稱之爲狀態管理模式,用於解決組件間通訊的以及多組件共享狀態等問題。官網文檔中註明的場景十分影響框架開發的總體脈絡,也就是這個框架從一開始作就想解決這些問題,數組
(=》 符號代之類比 ->符號表明 在vuex提供的輔助函數)網絡
state : 數據倉庫,全部的數據都存在這裏。 =》 vue對象的data。框架
getters :能夠搭配倉庫中的數據結合起來聯動相應的數據 =》 vue的計算屬性 -> mapGetters異步
mutation :更新數據倉庫中的數據 -> mapMutations函數
action :負責異步操做(網絡請求、定時器等內容)調用mutation來更新數據 -> mapActions學習
modules : 模塊模式 提供了命名空間 使狀態管理支持了樹形結構。(畫重點)spa
把這些API分紅倆大類:cdn
action 與 mutation 解決了全部向Vuex更新數據的方式(同步與異步)。
getters 與 state 解決了vue組件(也能夠是vuex內部)從Vuex獲取數據。
modules呢 固然不屬於這兩大類,它是一個基石,他讓Vuex有了樹形結構, 你能夠將Vuex組織成一個模塊,每一個模塊都有action、mutation、getters、state等方法。模塊之間有了父子關係。
以上這些都是針對於Vuex內部的一些方法,能夠在Vuex的實例上使用。 Vuex的實例通常都會掛載到Vue對象上。
爲了方便使用Vuex還提供了一組輔助函數
在使用Vue進行開發的時候,咱們有大量的states、getters、mutations、actions要使用,每一個都使用vuex實例去調用會浪費不少代碼,尤爲是在使用了命名空間(namespaced)以後,vuex實例去調用這些方法都要加上對應的命名空間,因此就有了如下四個方法,接收一個namespace(能夠爲空),也就是命名空間前綴,以及一個對象、或者數組。
以上幾個方法都是爲Vue組件遍歷使用而產生的。
可是還不夠極致,每一個都要寫命名空間, 輔助函數還提供了createNamespacedHelpers。建立指定命名空間的輔助函數,
Vuex的功能首先分爲兩大類:
Vuex本身內部對數據狀態(state)有兩種功能:
Vuex支持的模式:模塊模式 modules,爲Vuex提供樹形結構,以及命名空間,幫助Vuex層級分明。
下一章分析一下脈絡