webpack - 代码拆分 vuex 应用程序

标签 webpack vue.js vuex

我有一个 vuex商店,我想对其应用代码拆分。

正在关注 this tutorial我试过这个:

import Vuex from 'vuex'
import Vue from 'vue'
import createLogger from 'vuex/dist/logger'

Vue.use(Vuex)
const debug = process.env.NODE_ENV !== 'production'

const store = new Vuex.Store({
  strict: debug,
  plugins: debug ? [createLogger] : [],
  state: {
    loading: false
  },
  mutations: {
    toggleLoading: (state) => {
      state.loading = !state.loading
    }
  },
  getters: {
    loading: state => state.loading
  },
  actions: {
    toggleLoading: ({commit}) => {
      commit('toggleLoading')
    }
  }
})

import('./modules/userModule').then(userModule => {
  store.registerModule('user', userModule)
})
import('./modules/tenantsModule').then(tenantsModule => {
  store.registerModule('tenants', tenantsModule)
})
import('./modules/updatesModule').then(updatesModule => {
  store.registerModule('updates', updatesModule)
})

export default store

但是申请失败了:

webpack-internal:///24:739 [vuex] unknown getter: user

我做错了什么?

最佳答案

如果在您的模块中使用 export default,您需要通过点符号访问它(我在 4.2 下读到 here)。所以像下面这样的东西对我有用:

import('./modules/userModule').then(userModule => {
    store.registerModule('user', userModule.default)
})

但是,我对这种方法遇到了一些问题。我经常在初始页面加载时使用商店,然后模块尚未加载。所以我在声明store的时候直接注册了store最初需要的部分,像这样:

import userModule from './modules/userModule'

Vue.use(Vuex);

export default new Vuex.Store({
    modules: {userModule}
})

希望这对您有所帮助!

关于webpack - 代码拆分 vuex 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45351190/

相关文章:

javascript - 使用 webpack 2 拆分 "vendor" block

reactjs - 代码分割和服务端渲染(React未定义)

javascript - 解析时 JSON 输入意外结束

javascript - 如何为 Vue.js 组件创建自定义样式属性

javascript - 二级vue路由直接访问报错

javascript - 将包中的代码拆分单独导出到不同的包

vue.js - 我可以在Vue原生组件中导入并使用Vue组件吗?

javascript - 如何使用 vuex 进行响应式更新

javascript - 将 Vuex 与 Nuxt.js 一起使用——正确的方法

javascript - 如何从 HTML 脚本访问 Webpack 包中的函数