詳解如何在vue-cli中使用vuex
前言
眾所周知,vuex 是一個專為 vue.js 應(yīng)用程序開發(fā)的狀態(tài)管理模式,在構(gòu)建一個中大型單頁應(yīng)用中使用vuex可以幫助我們更好地在組件外部管理狀態(tài)。而vue-cli是vue的官方腳手架,它能幫助我們方便的配置webpack。這樣看來,有很大的可能我們需要同時使用vue-cli與vuex
如何在vue-cli中使用vuex
項目搭建及添加vuex
當(dāng)我們使用vue-cli搭建一個vue項目的時候(假設(shè)項目名為learn-vuex),搭建完成后的文件目錄是這樣子的
首先使用npm install --save-dev vuex 把vuex添加到依賴,接下來就是如何在組件中使用vuex,大體上來說有以下兩種形式。
通過 store 選項
如果vue-cli搭建成功,在src目錄下會有一個main.js文件,main.js的主要作用是把項目中最頂層的app.vue組件掛載到DOM中,其他所有的組件都可以看做是app.vue的子組件。
在main.js中,做如下操作
import Vue from 'vue'
import App from './App'
import router from './router'
import Vuex from 'vuex';
Vue.config.productionTip = false
//注意下面的代碼
Vue.use(Vuex);
const store = new Vuex.Store({
state: {},
getters: {},
actions: {},
mutations: {}
});
//注意router選項,此處的寫法等同于store: store
new Vue({
el: '#app',
router,
store,
components: { App },
template: '<App/>'
})
在組件中,就可以通過this.$store 來使用store實例
如果在項目中需要配置的vuex選項很多,我們則應(yīng)該把vuex的相關(guān)代碼分割到不同模塊
在src下新建store文件夾,在文件夾中創(chuàng)建如下幾個文件
我們可以隨意設(shè)置文件名,但最好可以通過文件名就能判斷出這個文件是用來干嘛的
- index.js:整合各個模塊,創(chuàng)建并導(dǎo)出vuex實例
- rootState.js:配置vuex實例的state選項
- getters.js:getter選項
- mutations.js:mutations選項
- actions.js:actions選項
在index.js中,我們需要
import Vue from 'vue';
import Vuex from 'vuex';
import state from './rootState.js';
import getters from './getters.js';
import mutations from './mutations.js';
import actions from './actions.js';
Vue.use(Vuex);
const store = new Vuex.Store({
state,
getters,
actions,
mutations
});
export default store;
剩下的四個文件配置都差不多一樣,以rootState.js為例
const state = {
count: 0,
arr: [0,1,2,3,4,5]
}
export default state;
如此這般,在main.js中,我們需要編寫的代碼就減少了很多
import Vue from 'vue'
import App from './App'
import router from './router'
import store from './store/index';
Vue.config.productionTip = false
new Vue({
el: '#app',
router,
store,
components: { App },
template: '<App/>'
})
將vuex實例掛載到vue原型鏈上
這是一種非主流的方式,主要是受axios啟發(fā),這里有一篇博客講解如何在vue組件中使用axios,將axios掛載到vue原型鏈上是因為不能通過vue.use來使用axios
在這種方法中,我們需要
// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import App from './App'
import router from './router'
import store from './store/index';
Vue.config.productionTip = false
//在vue中使用vuex必須先調(diào)用vue.use方法
Vue.use(Vuex);
//具體掛載到vue原型的哪個屬性上,可以由我們自行決定
//遇到配置繁多的情況也可以進(jìn)行分割
Vue.prototype.$store = new Vuex.Store({
state: {},
getters: {},
actions: {},
mutations: {}
});
//沒有了store選項
new Vue({
el: '#app',
router,
components: { App },
template: '<App/>'
})
如此這般,還是可以通過this.$store 來使用vuex
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
vue2.0 使用element-ui里的upload組件實現(xiàn)圖片預(yù)覽效果方法
今天小編就為大家分享一篇vue2.0 使用element-ui里的upload組件實現(xiàn)圖片預(yù)覽效果方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-09-09
vue+bpmn.js實現(xiàn)自定義流程圖的完整代碼
這篇文章主要介紹了vue+bpmn.js實現(xiàn)自定義流程圖的完整代碼,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借價值,需要的朋友參考下吧2024-03-03
Vue.js中的全局錯誤處理函數(shù)errorHandler用法
這篇文章主要介紹了Vue.js中的全局錯誤處理函數(shù)errorHandler用法,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-06-06
element-ui table組件如何使用render屬性的實現(xiàn)
這篇文章主要介紹了element-ui table組件如何使用render屬性的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11
node+vue前后端分離實現(xiàn)登錄時使用圖片驗證碼功能
這篇文章主要介紹了node+vue前后端分離實現(xiàn)登錄時使用圖片驗證碼,記錄前端使用驗證碼登錄的過程,后端用的是node.js,關(guān)鍵模塊是svg-captcha,結(jié)合實例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-11-11
vue中使用iframe嵌入網(wǎng)頁,頁面可自適應(yīng)問題
這篇文章主要介紹了vue中使用iframe嵌入網(wǎng)頁,頁面可自適應(yīng)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-09-09
vue監(jiān)聽瀏覽器的后退和刷新事件,阻止默認(rèn)的事件方式
這篇文章主要介紹了vue監(jiān)聽瀏覽器的后退和刷新事件,阻止默認(rèn)的事件方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-10-10

