Vuex模块结构

时间:2017-07-25 07:02:48

标签: vue.js vuex

试图在教程和示例中找到这个,但没有发现任何相关内容。我知道开发人员需要对其进行构建,但我想知道如何应对以下方法:

我有一个商店,模块如:

- root/
--- app-store.js
--- modules/
----- tasks.js
----- another-module.js

等等。

我完全了解了模块,命名空间。但我不太确定如何处理这种情况(例子):

1 - 我访问任务列表。 2 - 单击列表中的任务,它将显示包含所有详细信息的视图。 3 - 您对此任务进行了一些更改(更新,删除等)

我现在正在做的事情:

  • 一个名为' tasks.js'

  • 的单个文件
  • 它使用已经嵌套的每个任务的信息加载所有任务

  • 当我点击时,我设置了一个' currentTaskId'变量。更新/删除/ etc

  • 时,所有操作都引用此变量
  • 我以ID作为键加载任务列表,因此我可以通过任务[id]轻松引用它,而不是每次都进行搜索。

我的怀疑:

  • 这个结构好吗?或者我应该创建一个模块来处理单个对象?

  • 使用ID作为数组的Key真的是一个好习惯吗?

  • 任何其他输入。我知道Vuex对结构非常灵活,但我发现自己试图想出一个漂亮的结构,但我害怕过度思考一些应该更简单的东西。

1 个答案:

答案 0 :(得分:1)

结构始终是开发人员的选择。如果您感到困惑,可以查看Vuex Application Structure

申请结构

Vuex并不真正限制您构建代码的方式。相反,它强制执行一系列高级原则:

  1. 应用程序级状态集中在商店中。

  2. 改变状态的唯一方法是提交突变,即 是同步交易。

  3. 异步逻辑应该封装在其中,并且可以组合 行动。

  4. 只要遵守这些规则,您就可以自行决定如何构建项目。如果您的商店文件太大,只需将操作,突变和getter拆分为单独的文件即可。

    对于任何非平凡的应用程序,我们可能需要利用模块。这是一个示例项目结构:

    ├── index.html
    ├── main.js
    ├── api
    │   └── ... # abstractions for making API requests
    ├── components
    │   ├── App.vue
    │   └── ...
    └── store
        ├── index.js          # where we assemble modules and export the store
        ├── actions.js        # root actions
        ├── mutations.js      # root mutations
        └── modules
            ├── cart.js       # cart module
            └── products.js   # products module
    

    作为参考,请查看Shopping Cart Example