vuex按需加載,避免首頁初始化全部數據

大型項目中,無論首頁需不須要那麼多變量,vuex都會一次性打包進去,vuex會很大,由於都是一次性加載的vue

需求:按需異步加載vuex
解決方案以下

第一步: 把.vue文件對應的vuex拆分出來,vuex

image.png

第二步:在xxx.vue文件裏面添加 nameisNeedVuex 屬性api

image.png

注意:爲了保證引入store下的文件名字跟組件命名同樣,請自行選擇合理的命名方式

第三步:用到 Vue.useVue.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);
                });
            }
        }
    });
});
相關文章
相關標籤/搜索