大型項目中,無論首頁需不須要那麼多變量,vuex都會一次性打包進去,vuex會很大,由於都是一次性加載的vue
需求:按需異步加載vuex
解決方案以下
第一步: 把.vue文件對應的vuex拆分出來,vuex
第二步:在xxx.vue文件裏面添加 name
和 isNeedVuex
屬性api
注意:爲了保證引入store下的文件名字跟組件命名同樣,請自行選擇合理的命名方式
第三步:用到 Vue.use
和 Vue.mixin
兩個api異步
在main.js中添加以下代碼:this
Vue.use(function() { Vue.mixin({ beforeCreate: function() { // $options是組件選項,包含組件.vue文件的 `export default` 的屬性 // 爲了拿到在組件定義的是否按需加載的屬性值 `isNeedVuex` if(this.$options.isNeedVuex) { // 須要設置.vue文件的name屬性,跟單文件組件名字命名同樣 let name = this.$options.name; import("./store/modules/" + name).then((res) => { console.log(res); // res.default就是表明咱們在store/modules文件夾下對應文件的export default對象 // registerModule是vuex自帶的方法,請自行搜索 // 第一個參數是動態注入的模塊名,第二個參數是模塊導出對象 this.$store.registerModule(name, res.default); }); } } }); });