将 vuex 状态与服务器同步的推荐策略

2024-01-10

想象一下这个简单的例子。您有一个 Vue JS 应用程序,用户可以在其中创建任务列表并对它们进行排序。这些列表应由服务器存储在数据库中。假设我们有一个ListComponent它完成了大部分用户体验。

我的问题是,我应该使用哪种模式来处理前后端数据同步?

A) 通过vuex:将活动列表(正在显示、编辑或创建的列表)存储在 vuex 中store. The ListComponent将改变store and then,对列表所做的更改将通过 API 发送到后端。

B) 直接进入服务器:直接读取和写入ListComponent每次显示、编辑或创建列表时发送到服务器。

如果遵循A,商店应该有什么架构?我应该如何以及何时启动同步?我如何跟踪哪些内容发生了变化,哪些内容没有变化?


根据您的用例,两者都可能是正确的。我当前正在构建的应用程序同时使用了两者。

何时使用 B:直接访问服务器如果数据非常重要且需要保存,请使用 B。在这种情况下,您可能希望直接访问服务器并提供响应以验证它是否已提交到数据库。我们使用此流程来更改管理员类型。请注意,您还可以在服务器响应后更新 Vuex,并仍然使用 Vuex 来提供数据。

何时使用 A:通过 Vuex如果您需要更快的体验,请使用 A,因为无需等待服务器。在实际保存之前,您必须能够乐观地显示更改。另一个好处是您可以同步Vuex 到本地存储 https://github.com/robinvdvleuten/vuex-persistedstate。我们将其用于用于自定义视图的用户首选项。为了等待获取这些而减慢页面速度是一种糟糕的体验。

使用方法A:通过Vuex有几种方法可以做到这一点。这是一种模式:

  1. 从组件调度 Vuex Action 1
  2. 从更新状态的 Action 提交 Vuex Mutation - 这是一个乐观的更新,因为您假设它会经历
  3. 从 Action 1 调度另一个 Vuex Action 2 - 这假设您将在多个 Action 中重用此 Action,否则它可以全部进入 Action 1
  4. 动作2发送数据到服务器
  5. Promise 返回后,Action 2 提交变更以更新 Vuex 状态
  6. 突变需要处理任何差异(或错误)

算一下Vuex的成本

就像你的评论所示,如果你需要使用 Vuex,最好计算一下成本,因为它确实增加了很多开销和复杂性。理想的情况是,以包含与一种数据类型(例如“列表”)的所有交互的方式编写组件,这样您就不必通过 Vuex 共享状态。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 vuex 状态与服务器同步的推荐策略 的相关文章

随机推荐

  • 6.0.1 和表更改“UILabel?没有名为“text”的成员

    我正在研究 Swift 表演示 所有这些演示在 6 0 1 下似乎都有相同的错误消息 不知道如何解决这个问题 尝试这个 cell textLabel text self tableData indexPath row 并在此处阅读有关可选选
  • Firefox 不会显示 2 行文本区域的滚动条

    如果我设置高度以便实际只显示两行 则 Firefox 将不会在 2 行文本区域中显示滚动条 我必须让它足够大才能显示下面一行的一部分 有人解决过这个问题吗 我创建了一个jsfiddle http jsfiddle net briank AT
  • 如何通过编程更改 NSTextView 的文本值来实现撤消/重做?

    我创建了一个带有 NSTextView 和按钮的简单演示应用程序 为 textView 提供了 NSTextViewDelegate 并添加了一个操作 IBAction actionButtonClicked id sender NSStr
  • AngularJS 1.3 - 日期选择器初始格式不正确

    我昨天开始使用 AngularJS 1 3 发现一个问题是 Datepicker 中的初始日期不是定义的格式 日期格式正确after选择一个日期 AngularJS 1 2 10 的初始格式是正确的 如示例中注释掉 script 标签所示
  • 获取 Entity Framework 7 中修改对象的列表

    我很困惑 升级到 Entity Framework 7 并且我通常会覆盖里面的 SaveChangesDbContext能够在更改之前获取所有已修改对象的列表 最终 我有一个脚本可以跟踪数据库中的先前版本 在 Entity Framewor
  • 在 MapView 中的地图标记上方显示弹出窗口

    我不敢相信没有简单的方法可以做这样的基本事情 我想在用户单击地图标记后显示一个弹出窗口 气球 LinearLayout 类似于 Google 地图应用程序中的内容 当用户滚动地图时 它应该随地图移动 做这个的最好方式是什么 一种想法是在我的
  • Google Chrome 应用程序:Web 视图行为

    在研究一个问题时在 Chrome 扩展中
  • 在react-router中配置应用程序的基本名称

    我在反应路由器 2 x 配置方面遇到了一些困难 特别是应用程序基本名称 我有一个应用程序 在其整个生命周期中可能有不同的基本根 例如 开发中 users生产中 account迁移后投入生产 基本名称在几个地方发挥作用 Webpack 中的静
  • 如何在 Objective-C 中以编程方式发送带有某些正文文本的短信 [重复]

    这个问题在这里已经有答案了 可能的重复 如何在 iPhone 上以编程方式发送短信 https stackoverflow com questions 10848 how to programmatically send sms on th
  • Java 8 中致命的死亡钻石

    我是一名 Java 开发人员 同时也在学习 C 我最近进入了 C 中的 死亡钻石 并研究了这个问题在 Java 中是否可能出现 在接口是否解决了 致命的死亡钻石 问题 https stackoverflow com questions 98
  • 使用 ProGuard 和 Android 应用程序时出现重复资源

    我正在尝试将 ProGuard 与我的一个应用程序 假设为 A 一起使用 该应用程序包含另一个应用程序作为库 假设为 B 这是我的 proguard 文件 optimizationpasses 5 dontusemixedcaseclass
  • Hibernate ManyToMany 自连接是否可以用于非键列?获取映射异常

    我遇到以下问题 我有一个与其他用户实体具有多对多关系的用户实体 因此 我想使用多位注释进行自连接 这种关系基于整个系统使用的现有表 因此我根本无法对数据库进行更改 所以我们有 2 个表 User Id ShortName 和 UserLin
  • Linux 磁盘缓存和 kmalloc 与 GFP_ATOMIC

    在一些知名的article https www linuxatemyram com 关于Linux磁盘缓存有这样的说法 绝对没有理由禁用它 Also 一个拥有足够内存的健康 Linux 系统 在运行一段时间后 会显示以下预期且无害的行为 可
  • 我应该如何处理 API 中的错误?

    我正在编写一个 API 它封装了一些核心基础 Web 功能 可以返回许多可能的错误条件 我正在努力决定处理 API 使用者应该处理的错误情况的最佳方法 例如网络超时 接收意外结果 格式错误的 XML 等 我提出了 3 个不同的模型 但不确定
  • 新的 Facebook SDK 应用程序不可用:您尝试使用的应用程序不再可用或访问受到限制

    新用户无法通过 Facebook 登录 并收到一条错误消息 应用程序不可用 您尝试使用的应用程序不再可用或访问受到限制 用户使用现有的 Facebook 帐户进行访问没有任何问题 当我在 Facebook 上创建虚假 测试帐户时 我遇到了这
  • 如何从文件名获取完整文件路径?

    如何获取给定文件的完整路径 例如我提供 string filename test txt 结果应该是 Full File Path C Windows ABC Test test txt Try string fileName test t
  • 应用程序范围的全局变量

    In Rails 我应该在哪里定义Rails堆栈的每一层都可以识别的变量 例如 我想要一个CUSTOMER NAME John 可以访问的变量helper rake task 控制器 and model 我应该在哪里定义这个变量Rails
  • jQuery 当前位置和滚动位置之间的差异

    我试图获取元素距顶部的当前距离与其滚动后的下一个位置之间的差异 事实上 我试图根据其距离来选择动画持续时间 我写了下面的代码 但它不能正常工作 I have 6菜单项 当我单击每个菜单项时 窗口滚动到其位置 但问题是 当我单击最后一项时 它
  • 从控制台运行 Zend Framework 2 操作不起作用

    我有一个 ZF2 应用程序从 Web 服务器正常运行 我需要从命令行运行一些操作 因为我想要执行一些计划任务 cron 作业 所以我找到了这些有用的链接 Zend框架的官方文档 http framework zend com manual
  • 将 vuex 状态与服务器同步的推荐策略

    想象一下这个简单的例子 您有一个 Vue JS 应用程序 用户可以在其中创建任务列表并对它们进行排序 这些列表应由服务器存储在数据库中 假设我们有一个ListComponent它完成了大部分用户体验 我的问题是 我应该使用哪种模式来处理前后