當有多個單頁應用,每個單頁應用需要使用同一個數(shù)據(jù)的時候殖演,Vuex就派上用場了,它相當于是一個前端的數(shù)據(jù)庫飒货。
Vuex中主要有五個概念:state妖枚、getter廷臼、action、mutation绝页、module荠商。
state: 用于定義,存儲所有的數(shù)據(jù)续誉,接下來的getter莱没、action、mutation基本上都是操作state里面的內(nèi)容酷鸦。
getter: 相當于Vuex中的計算屬性饰躲,它可以基于state中的內(nèi)容,獲得新的衍生臼隔。
mutation: Vuex中主要的修改操作嘹裂,任何修改state內(nèi)容的操作,都是在mutation中實現(xiàn)的(注意:這里面的所有操作都是同步的)躬翁,相當于Vuex中methods焦蘑。
action: Vuex中實現(xiàn)異步操作辦法,傳入的參數(shù)是mutation里面的方法盒发,而不是state里的值例嘱。
module: Vuex中的模塊化操作實現(xiàn)的位置,可以將上面state宁舰、getter拼卵、action、mutation分別寫到這里蛮艰。
用法(安裝過程就省略了):
首先使用vue-cli建立工程:
vue init webpack project
在main.js中導入:
import Vue from 'vue'
import App from './App'
import router from './router'
import Vuex from 'vuex'
import store from './store/index'
Vue.config.productionTip = false
Vue.use(Vuex)
/* eslint-disable no-new */
new Vue({
el: '#app',
router,
store,
components: { App },
template: '<App/>'
})
項目結(jié)構(gòu):
注意的地方:
1.store是使用vuex的主要地方test_module是將一個module的state腋腮、getter、action、mutation單獨拆分出來即寡。
2.test_module中的index是組裝這些state徊哑、getter、action聪富、mutation的地方莺丑。
3.store下的index可以單獨在里面定義state,單獨使用getter墩蔓、action梢莽、mutation,并定義引入的module奸披。
具體請看:
vuex的demo