【发布时间】:2017-04-11 06:48:48
【问题描述】:
我看到很多 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 数据。为此,购物车导入 actions.js:
import { inCart } from '../../store/actions'
actions.js 导入 api 的 index.js 以便它可以连接到 api。然后它会更新 Vuex 存储中的值。
好的,这对我来说很清楚。但现在,我想在 Messages.vue 模块上工作。该模块也应该连接到 api 以获取所有消息,但不必将结果存储在 Vuex 中。唯一需要数据的组件是Messages.vue本身,所以应该只存储在组件的data()中。
问题:我无法在 Messages.vue 中导入 actions.js,因为该操作不应更新 Vuex。但我无法将actions.js 移动到api 目录,因为这破坏了将所有向存储添加数据的文件放在存储目录中的逻辑。除此之外,逻辑应该放在Messages.vue 中。例如,当 api 返回错误时,应设置本地 error-constant。所以不能用单独的文件来处理。
进行 api 调用并将它们存储在 vuex 或本地 data() 中的推荐应用程序结构是什么?将操作文件、api 文件等放在哪里?查看 Jackblog 示例时,它仅支持 Vuex 数据。如何重组它以支持两者?
【问题讨论】:
-
一个深思熟虑的问题。谢谢你的提问,乔迪。
标签: api structure vue.js directory-structure vuex