Falcor和GraphQL之间有什么区别?
GraphQL由类型系统、查询语言和执行组成 语义、静态验证和类型内省,每一个都概述了 在下面为了指导您完成这些组件中的每一个,我们编写了 该示例旨在说明GraphQL的各个部分 - Falcor允许您将所有远程数据源表示为单个数据源 通过虚拟JSON图创建域模型。不管怎样,你都是用同样的方式编码的 数据所在的位置,无论是在客户端的内存中还是通过网络 在服务器上 - Falcor和GraphQL(在中继上下文中)之间的区别是什么?我已经查看了where答案与how比较。以下是总结(意译):Falcor和GraphQL之间有什么区别?,graphql,relayjs,falcor,Graphql,Relayjs,Falcor,GraphQL由类型系统、查询语言和执行组成 语义、静态验证和类型内省,每一个都概述了 在下面为了指导您完成这些组件中的每一个,我们编写了 该示例旨在说明GraphQL的各个部分 - Falcor允许您将所有远程数据源表示为单个数据源 通过虚拟JSON图创建域模型。不管怎样,你都是用同样的方式编码的 数据所在的位置,无论是在客户端的内存中还是通过网络 在服务器上 - Falcor和GraphQL(在中继上下文中)之间的区别是什么?我已经查看了where答案与how比较。以下是总结(意译): F
- FalcorJS和GraphQL正在解决同样的问题(查询数据、管理数据)
- 重要的区别在于GraphQL是一种查询语言,而FalcorJS不是
- 当您向FalcorJS请求资源时,您非常明确地请求有限系列的值。FalcorJS确实支持范围之类的功能,例如
。但它不支持开放式查询,例如类型[0..10]
genres[0..*]
- GraphQL是基于集合的:给出所有记录,其中为true,按此排序,等等。从这个意义上说,GraphQL查询语言比FalcorJS更强大
- 使用GraphQL,您有一个强大的查询语言,但您必须在服务器上解释该查询语言
最后的讨论围绕着GraphQL带来的功能是否超过复杂性来解决。我现在已经用这两个库编写了应用程序,我可以同意Gajus文章中的所有内容,但在我自己使用框架时发现了一些最重要的不同东西
- 可能最大的实际区别是,到目前为止,GraphQL上的大多数示例和可能完成的工作都集中在将GraphQL与Relay集成上——Facebook的系统用于将ReactJS小部件与其数据需求集成在一起。另一方面,FalcorJS倾向于与小部件系统分开工作,这意味着它可能更容易集成到非反应/中继客户端,并且在将小部件数据依赖项与小部件匹配方面,它会自动为您做得更少
- FalcorJS在客户端集成方面的灵活性的另一面是,它可能对服务器需要如何操作非常固执己见。FalcorJS实际上有一个直接的“通过HTTP调用此查询”功能——尽管Jafar Husain似乎没有太多谈论它——并且一旦您包含了这些功能,客户端库对服务器信息的反应方式就非常类似,除了GraphQL/Relay添加了一层配置之外。在FalcorJS中,如果您要为movie返回一个值,那么返回值最好是'movie',而在GraphQL中,您可以描述即使查询返回'film',您也应该将其作为'movie'放在客户端数据存储中这是Gajus提到的权力与复杂性权衡的一部分
- 在实践的基础上,GraphQL和继电器似乎更加发达。贾法尔·侯赛因(Jafar Husain)提到,Netflix前端的下一个版本将至少部分在FalcorJS上运行,而Facebook团队提到,他们已经在生产中使用GraphQL/Relay堆栈的某些版本超过3年了
- 围绕GraphQL和Relay的开源开发者社区似乎正在蓬勃发展。围绕GraphQL和Relay有大量参与度很高的支持项目,而我个人在FalcorJS方面发现的项目很少。此外,Relay()的基本github存储库比FalcorJS()的github存储库活跃得多。当我第一次撤销Facebook回购协议时,这些例子都被打破了。我打开了一个github问题,几个小时内就解决了。另一方面,我在FalcorJS上发布的github问题在两周内没有得到官方回应