javascript - JS API (json) 数据使用最佳实践, "models"或 JSON - 性能、可维护性、资源

标签 javascript vue.js vuex es6-class

我使用 Laravel 和 VueJS(和 Vuex)构建了一个应用程序。我在使用这些框架或前端构建应用程序方面没有太多经验。我想知道在前端使用从 API 接收的数据的最佳实践或最佳方式是什么。

我的应用程序有例如包含 1 个或多个用户的帐户。前端显示例如所有帐户的概述以及所有用户的列表(例如管理目的)。我的 API 返回类似这样的内容(示例):

解释我的问题的一些背景:

// When fetch account(s)
data: {
  account: {
    id: "a1",
    name: "Account1",
  },
  accounts: [
    acount x,
    account y,
    ...
  ]
}  
// When fetch user(s)
data: {
  user: {
    id: "u1",
    name: "User1"
  },
  users: [
     ...
  ]
}

从性能来看,我认为最好将 API 中的 json 对象直接保存在存储中。我将使用商店中的 JSON 对象来填充更新 View 和概览表。

从软件工程的 Angular 来看,我更喜欢创建 ES6(类)对象。这有一些优点:

  • 我可以为用户和帐户对象实现诸如 save()update()fetchUsers() 之类的函数。这些函数调用例如获取或更新函数(VueX FLUX 存储)。
  • 我可以使用继承,例如用于 save() 函数等。
  • 当我需要其他功能时,我可以在对象类中实现它们
  • 也许它还有其他我还不知道的(“模型”)优势

在这种情况下,我会将 json 数据解析为 ES6 类对象,并将这些对象(或对象列表)保存在我的存储中,而不是 json 对象。

现在我正在寻找:

  • 是否有任何(ES6?)约定可以遵循(找不到)或者这种情况的最佳实践是什么?/这 2 个(或者其他)选项中哪一个是正确的选择?
  • 创建对象对性能或资源使用(例如移动设备?)有何影响。
  • 最终的性能或资源影响可以忽略不计吗? (对于对象的数量是否存在一种也许是最佳实践的限制?)

我认为该地点和我的问题很清楚,但当需要一些额外信息时请告诉我。

最佳答案

通常推荐用于状态管理存储(例如 Vuex)的最佳实践是

  • 保持扁平结构,没有嵌套对象
  • 通过对象 ID 标准化条目

在这里存储完整的 ES6 类可能不太适合这里。

有关此主题的更多信息,请参阅此处的一些演讲和博客:

Vuex Best Practices (linusborg)
Vuex State Normalization
Vuex Best Practices for Complex Objects

您提到您对这些框架的经验不是很丰富。您可能首先想问自己 Vuex 是否是正确答案的问题。

引用下面的引用文档,人们往往会过度使用此类工具,并且在学习时使用它来存储“所有内容”。普遍的共识似乎是只有在确实需要时才在 Vuex 中存储数据(主要用例是多个组件必须访问/更新数据)。

从您的描述中尚不完全清楚您的应用是否属于这种情况。

在此处查看更多信息:

What Data Should Be Stored in Vuex

关于javascript - JS API (json) 数据使用最佳实践, "models"或 JSON - 性能、可维护性、资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59482826/

相关文章:

javascript - jQuery Uncaught SyntaxError : Unexpected Identifier but my code looks good!(我认为)

javascript - 根据对象的 id 创建一个新的对象数组

javascript - 在事件处理程序中引用 `this` vue 组件

vue.js - Vuex 在开始时从 API 调用填充数据

javascript - vue js中的嵌套数组总计

javascript - 使用 Plupload 限制上传前可选择的文件数量

javascript - Vue - 是否可以在组件的计算属性中使用 Vuex getter?

javascript - 从组件内部创建的 FullCalendar 对象访问 Vue 组件对象

javascript - 在 vuex 存储中存储配置是一个好的做法吗?

javascript - 代码镜像 : how to indent the whole line when pressing tab?