鍍金池/ 問(wèn)答/HTML/ vuex 如何在vue 獨(dú)立插件中使用? 插件中的vuex 又如何與 全局 的v

vuex 如何在vue 獨(dú)立插件中使用? 插件中的vuex 又如何與 全局 的vuex合并?

問(wèn)題是這樣的, 我有一個(gè) vue 插件(使用了vue install 導(dǎo)出,可以使用vue.use()引入的插件),我想在這個(gè)插件當(dāng)中使用 vuex 用來(lái)進(jìn)行組件之間通信。
目前出現(xiàn)了如下問(wèn)題:

我知道的是 vuex 使用時(shí),是在vue創(chuàng)建對(duì)象前以插件方式導(dǎo)入,并在vue實(shí)例化的時(shí)候注入到vue對(duì)象中的,而現(xiàn)在我的插件,
只是一大堆vue組件的集合,并不是一個(gè)完整的 vue 實(shí)例,所以在導(dǎo)出時(shí)并不能依賴(lài) 全局中 main.js
當(dāng)中實(shí)例化的vue對(duì)象,也就無(wú)法使用注入對(duì)象的 vuex, 在此情景下我該怎么使用vuex到組件當(dāng)中呢???
回答
編輯回答
念初

好吧,又要自問(wèn)自答,大半夜的,還有一大堆后端接口沒(méi)擼,扯著看vuex源碼,看的一臉懵逼也沒(méi)找到想要的答案。最后想了一個(gè)歪方法。(廢話(huà)到此為止)

解決方法:

在解決這個(gè)問(wèn)題的時(shí)候,絕對(duì)不能這樣想:“插件中的vuex是相對(duì)與引用插件的項(xiàng)目中的vuex獨(dú)立的”,什么意思呢?就是說(shuō)不能抱著把你插件中的store完全封裝起來(lái),在引用插件的時(shí)候,只要注冊(cè)插件就好了,然后vuex,store 啥也不管,它就會(huì)在它自己的小作用域里面 獨(dú)自happy。(其實(shí)我最初的打算就是這個(gè)樣子的,可是找不到解決辦法。求大神支招?。。?/p>

基于以上錯(cuò)誤的思路,半天時(shí)間沒(méi)了。后來(lái)我的解決方案是,

使用 vuex 的 module .

是的,vuex設(shè)計(jì)之初呢,為了防止把所有的 狀態(tài)(state)都放在一起,導(dǎo)致 state 過(guò)于龐大而不好維護(hù),所以使用了 module,是的模塊的狀態(tài)得以很好得分開(kāi)管理。

這里呢,我是將我所有的 狀態(tài)管理封裝到了一個(gè)module當(dāng)中,而在導(dǎo)出插件的時(shí)候,順便將這個(gè)module導(dǎo)出。

example

//moduleStore.js
const state={
    editorContent:'editorContent',
};
const mutations={};
const actions={};
const getters={
    getEditorContent(state){
        return state.editorContent;
    }
};

const editorStore={
    state,
    mutations,
    actions,
    getters
}

export default editorStore;
//plugin index.js

import module from './moduleStore.js'

const plugin={
    install:(Vue,options)=>{
    }
}

export const ms=module;    //這里需要以命名方式導(dǎo)出,不能用默認(rèn)方式導(dǎo)出
export const pl=plugin;

好了,這樣的話(huà),基本上就算是搞定了。那插件使用的時(shí)候怎么辦勒?

首先,

// main.js
import {pl} from 'plugin'; //引入插件
Vue.use(pl)  //全局注冊(cè)插件

這里,插件的導(dǎo)入注冊(cè)完畢,再然后,在全局的 Vuex store 中,

//index.js
import {ms} from 'plugin'   //導(dǎo)入模塊 vuex store


//再然后,將我們的 ms 注冊(cè)進(jìn)全局的 modules
const modules={
    ms,
}

至此,插件完整的與項(xiàng)目整合

2017年3月23日 15:39
編輯回答
負(fù)我心

我有以下幾個(gè)問(wèn)題請(qǐng)教:
1、插件內(nèi)部如何使用vuex的相關(guān)方法
2、如何導(dǎo)出插件,通過(guò) module.exports 。。。。的方式,
能不能不按你所說(shuō)的, export const ms=module; //這里需要以命名方式導(dǎo)出,不能用默認(rèn)方式導(dǎo)出
我的需求是通過(guò)npm包的形式 import 導(dǎo)入插件

望回復(fù),寫(xiě)寫(xiě)。。。-、-、、、、

2017年3月18日 00:46