我必须从头开始一个新的(Web +本机)项目(中型应用程序)。由于大量的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 的新手,我建议你查看 How to GraphQL,在那里你可以找到关于 Relay 和 Apollo 的教程。
几条信息:
- Relay非常强大,但也非常复杂,并且具有显着的学习曲线。
- Apollo建立在Redux之上,尽管这对开发人员来说并不真正相关,因为商店对你来说是隐藏的。但是,使用与Redux中类似的概念,例如用于使用
updateQueries
更新存储。 - 如果您想管理服务器缓存数据以外的状态,将 Apollo 存储与您自己的 Redux 存储相结合也非常简单。 使用
- Apollo,您还可以使用实时订阅
- 我绝对建议不要使用Apollo或Relay,而只使用Redux,因为在发送查询,突变,缓存和UI更新时,这两个框架都减轻了您的工作。但是,如果您正在寻找更轻量级的 GraphQL 客户端,您可能想看看 Lokka。
看看这篇比较中继和阿波罗的深入文章,了解更多背景信息。
如果你想了解更多关于 Relay 和 Apollo 的信息,请查看How to GraphQL教程网站。
顺便说一下,如果你不想自己构建后端的另一个选择是 Graphcool(免责声明:我为他们工作:))。