Relay vs Redux vs Apollo with GraphQL 和 React-Native [已关闭]

2024-04-09

我必须从头开始一个新的(网络+本机)项目(中型应用程序)。由于存在过多的 JS 框架和实现,尤其是在过去几年中,我对我常用的堆栈产生了第二个怀疑。

我一直在前端使用 React + Redux,并在后端使用 Node 和 MongoDB 通过 REST API 进行通信。

对于这个新项目,我决定使用 React-Native + React Native for Web + Node + PostgreSQL。但是,我想知道应该使用哪个框架来获取数据和状态/存储管理。

到目前为止,redux 对我来说效果很好。然而,由于JS进化的本质。我对我过去使用的同样的堆栈有点怀疑。

如果我使用以下堆栈有哪些优点和缺点

React-Native + React-Native-For-Web + Redux + GraphQL + Node + PostgreSQL


React-Native + React-Native-For-Web + Relay + GraphQL + Node + PostgreSQL


React-Native + React-Native-For-Web + Apollo + GraphQL + Node + PostgreSQL

我读过很多文章阐述使用各个框架的好处,但是内容和文章的数量有点吓人。我明白答案没有正确或错误之分。然而,最好知道前面提到的哪个堆栈能够很好地结合在一起,记住——更少的学习曲线、良好的文档、可维护性、更少的解决方法。


我认为如果您有 React + Redux 背景,那么 Apollo 应该是您的最佳选择!

注意:如果您是 GraphQL 的新手,我建议您查看如何使用 GraphQL https://www.howtographql.com/在这里您可以找到有关 Relay 和 Apollo 的教程。

几条信息:

  • Relay 非常强大,但也极其复杂,并且具有显着的学习曲线。
  • Apollo 构建在 Redux 之上,尽管这对于作为开发人员的您来说并不真正相关,因为商店对您来说是隐藏的。然而,使用了与 Redux 中类似的概念,例如用于更新商店updateQueries http://dev.apollodata.com/react/cache-updates.html#updateQueries.
  • 这也很简单将 Apollo 商店与您自己的 Redux 商店结合起来 http://dev.apollodata.com/react/redux.html如果您想管理服务器中缓存数据以外的状态
  • 通过 Apollo,您还可以使用实时订阅 https://www.graph.cool/docs/tutorials/worldchat-subscriptions-example-ui0eizishe/
  • 我绝对建议不要使用 Apollo 或 Relay,而只使用 Redux,因为这两个框架在发送查询、突变、缓存和 UI 更新方面都减轻了你的负担。但是,您可能想看看Lokka https://github.com/kadirahq/lokka如果您正在寻找更轻量级的 GraphQL 客户端。

看看这个深入的文章 https://www.graph.cool/docs/tutorials/relay-vs-apollo-iechu0shia/比较 Relay 和 Apollo 以获取更多背景信息。

如果您想了解有关 Relay 和 Apollo 的更多信息,请查看如何使用 GraphQL https://www.howtographql.com教程网站。

顺便说一句,如果您不想自己构建后端,则另一个选择是图酷 https://graph.cool(免责声明:我为他们工作:))。

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

Relay vs Redux vs Apollo with GraphQL 和 React-Native [已关闭] 的相关文章

随机推荐

  • Android UI 测试期间“未找到测试”

    如果我有时想通过右键单击测试然后选择运行来运行单个测试 测试结果将显示 未找到测试 并显示与 线程 main java lang NoClassDefFoundError 中的异常 相关的错误 我发现这种情况只发生过几次 为什么会发生这种情
  • C++迭代器和反向迭代器

    我正在写一个iterator 实际上是const iterator对于我当前的对象 我还想创建一个reverse const iterator also 我环顾四周 想看看如何做到这一点 然后我偶然发现this http www cplus
  • 在jsp页面中使用log4j的正确方法是什么

    我的意思是 我希望记录器名称反映 source jsp 文件 无论它是否包含在另一个文件中或编译为类或其他文件 首先 导入所需的包 即 then the jsppagename jsp根据您使用的服务器 可能会发生变化 然后 在 jsp 内
  • GZip 算法如何工作? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 GZip 文件压缩算法如何工作 如果有人有这方面的任何文档 我想阅读它 如果您仍在寻找更详细的概述 我已经在以下位置编写了 gzip de
  • Django 对象.update_or_create

    我有一个在 celery 中运行的 period task 来查询最新的加密货币价格 但由于某种原因 每次想要显示数据时 我没有得到更新的记录 我只是得到新的记录 而旧的记录由于某种原因被保留 tasks py periodic task
  • NavigationView如何处理动态标题内容

    我有一个非常标准的 NavigationView 当我在标题中使用静态布局 如下所示 时 效果非常好
  • 约束布局 - 具有最大宽度的两个视图

    我想创建一个布局 使用约束布局 如下所示 在不同的语言中 Button1 可能比 Button2 大 我怎样才能做到这一点 我只能在包含两个按钮的约束内使用 LinearLayout 来实现此目的 但我尝试仅使用布局 Thanks Upda
  • 如果主体参数以“@”开头,则发出 PowerShell POST 请求

    我想在 PowerShell 中发出 POST 请求 以下是 Postman 中的正文详细信息 type login username email protected cdn cgi l email protection password
  • 生成数字数组中有效的数字组合

    我正在尝试从数字数组中生成所有有效的数字组合 假设我们有以下内容 let arr 1 2 9 4 7 我们需要输出这样的内容 1 2 9 4 7 1 2 9 47 1 2 94 7 1 2 947 1 29 4 7 1 29 47 1 29
  • 我无法在我的 Visual C Express Edition 2008 中汇编电影 (MMX) 指令

    当我尝试编译时movd指令显示错误为 error A2085 instruction or register not accepted in current CPU mode 我的代码如下 386 model flat c code add
  • 我怎样才能让我的verilog移位器更通用?

    这里我有一个移位器 但现在它最多只能工作 3 位 我一直在寻找 但不知道如何让它工作最多 8 位 module shifter a b out input 7 0 a b output 7 0 out wire 7 0 out1 out2
  • 扩展 Eloquent 的类的构造函数

    我刚刚启动了一个新网站 我想使用 Eloquent 在为数据库播种的过程中 我注意到 如果我在扩展 eloquent 的模型上包含任何类型的构造函数 则会添加空行 例如 运行此播种器
  • 如何解决三向多态关联?

    首先我要说我正在使用 MySQL 不是事务型 并且这是无法更改的 另外 为了简洁和清晰起见 我简化了此处的表格 在此示例中 课程 由其内部属性和外部属性及其自己的属性 阅读 组成 阅读 有其自己的关键依赖属性和三个不同的外部属性 阅读源 我
  • 如何在 SQL Server 2008 中存储特定列的列值?

    基本上我正在映射字段 正如你所看到的GridView 2我选择了特定的列名称 让我们考虑第一条记录 即1 id Column0 For id我已选择Column0 所以在数据库中我想在 id 列下存储列值 1 2 3 4 像下面这样 id
  • 使用属性和不访问 ivars 之间的区别

    使用属性或直接访问 ivars 的特定性能和行为差异 对于全局变量 使用它有什么区别 interface myClass UIImageView myView void loadView super loadView myView UIIm
  • 如何动态添加 mixin 作为基类而不出现 MRO 错误?

    说我有课A B and C Class A and B都是 Class 的 mixin 类C class A object pass class B object pass class C object A B pass 这在实例化 C 类
  • 在angularjs中克隆html元素

    我正在尝试在 angularjs 中实现拖放系统 我希望在拖动开始时克隆拖动的对象 但是我不知道如何在 angularjs 中克隆元素及其范围和链接控制器 有什么建议么 不建议使用 Angular 来克隆 DOM 元素 通常是通过拖放完成的
  • 如何比较两个 pandas 数据帧并删除一个文件上的重复项而不附加其他文件中的数据[重复]

    这个问题在这里已经有答案了 我正在尝试使用 pandas 数据框比较两个 csv 文件 其中一个是每天都会附加数据的主表 test master csv 第二个是每日报告 test daily csv 其中包含我想要附加到 test mas
  • 使用 slick/scala 进行流式传输

    我正在研究 scala slick 流 并试图了解它是如何工作的 这是我的测试代码 val bigdata TableQuery BigData val x db stream bigdata result transactionally
  • Relay vs Redux vs Apollo with GraphQL 和 React-Native [已关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我必须从头开始一个新的 网络 本机 项目 中型应用程序 由于存在过多的 JS 框架和实现 尤其是在过去几年中 我对我常用的堆栈产生了第二个怀疑