我看到很多Vue.js项目都使用这种结构:
├── main.js
├── api
│ └── index.js
│ └── services #containing files with api-calls
│ ├── global.js
│ ├── cart.js
│ └── messages.js
├── components
│ ├── Home.vue
│ ├── Cart.vue
│ ├── Messages.vue
│ └── ...
└── store
├── store.js
├── actions.js #actions to update vuex stores
├── types.js
└── modules
├── global.js
├── cart.js
└── ...
这种结构的一个例子是'Jackblog'。
例如,Cart.vue
想要在 Vuex 中更新 inCart
数据。为此,Cart 导入 actions.js
:
import { inCart } from '../../store/actions'
actions.js
导入 api 的 index.js
,以便可以连接到 api。然后,它会更新 Vuex store 中的值。
好的,对我来说很清楚了。但现在,我想要处理 Messages.vue
模块。该模块也应该连接到 api 以获取所有消息,但不必将结果存储在 Vuex 中。唯一需要数据的组件是 Messages.vue 本身,因此它只应存储在组件的 data()
中。
问题: 我不能在 Messages.vue
中导入 actions.js
,因为该操作不应该更新 Vuex。但我也不能将 actions.js
移动到 api
目录中,因为这会破坏将所有添加数据到 store 的文件放在 store-directory 中的逻辑。除此之外,逻辑应该放在 Messages.vue
中。例如,当 api 返回错误时,应设置一个本地的 error
常量。因此,它不能由单独的文件处理。
如何建议的应用程序结构来进行 API 调用并在 Vuex 或本地 data()
中存储它们?actions 文件、api 文件等应该放在哪里?当查看 Jackblog 示例时,仅支持 Vuex 数据。如何重构以支持两者?