课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
对于现在的大多数前端编程开发程序员来说,使用编程开发框架可以说是常态了,今天我们就一起来了解一下,GraphQL服务器对于前端编程开发都有哪些好处。
GraphQL优点
重新分配负载和优化有效载荷
通常,某些机器比其他机器更适合用来完成某些任务。当我们引入GraphQL中间层后,GraphQL服务器仍然需要调用与客户端相同的服务和RESTAPI。现在的区别在于,大多数数据是在同一数据中心内的服务器之间流动。这些服务器到服务器之间的调用具有非常低的延迟,而且带宽非常高,与来自浏览器的直接网络调用相比,性能提升了8倍。
从GraphQL服务器到客户端浏览器的后一英里数据传输现在减少到了单个网络调用。由于GraphQL允许客户端选择它需要的数据,所以我们只需要获取更小的有效载荷。
在我们的应用程序中,之前需要获取10MB数据的页面现在只需要获取200KB。页面加载速度变得更快,特别是在数据受限的移动网络上,我们的应用程序使用的内存也更少了。这些变更是以提高服务器利用率为代价的,服务器需要进行数据的获取和聚合,不过虽然牺牲了这额外的几毫秒服务器时间,却换来了较小的客户端有效载荷。
可重用的抽象
软件开发人员通常希望使用可重用的抽象而不是单一用途的方法。在使用GraphQL时,我们定义了数据以及与数据之间的关系。当消费者应用程序从多个源获取数据时,不需要操心与数据连接操作相关联的复杂业务逻辑。
例如,我们只在GraphQL中定义一次实体:catalog、creative和comment。我们现在可以基于这些定义构建多个页面视图。客户端应用程序(catalogView)的一个页面想要获得catalog中所有creative的所有comment,而另一个客户端页面(creativeView)想要知道creative和相关comment所属的catalog。
链接类型系统
很多人专注于单一服务中的类型系统,但很少关注跨服务。在GraphQL服务中定义了实体之后,我们就会使用自动生成工具为客户端应用程序生成TypeScript类型。React组件的prop接收类型以匹配组件查询。由于这些类型和查询也需要通过服务器schema的验证,因此服务器的任何重大更改都将被使用数据的客户端捕获到。
使用GraphQL将多个服务链接在一起,并将这些检查过程集成到构建过程中,可以在部署错误代码之前捕获更多问题。理想情况下,我们可以实现从数据库层一直到客户端浏览器的类型安全性。
DI/DX——简化开发
创建客户端应用程序时人们比较关心的是UI/UX,但开发者接口和开发者体验对于构建可维护应用程序来说同样重要。在使用GraphQL之前,编写一个新的React容器组件需要维护复杂的逻辑。
开发人员需要考虑数据之间的相关性、如何缓存数据、是否进行并行调用还是串行调用以及在Redux的什么地方保存数据。在使用GraphQL查询包装器后,每个React组件只需要描述它需要的数据,包装器会处理所有其他问题。这样样板代码更少了,数据和UI之间的关注点也更清晰了。这种声明性数据提取模型让React组件变得更容易理解。
其他好处
我们也注意到了其他的一些较小的好处。先,如果GraphQL查询的某些解析器失败,成功的解析器仍然会将数据返回到客户端,并尽可能多地渲染页面。其次,后端数据模型得到大大的简化,因为我们不需要关心客户端的模型,并且在大多数情况下可以只提供原始实体的CRUD接口。后,测试组件也变得更容易,因为GraphQL查询被自动转换为测试存根,我们可以独立于React组件测试解析器。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!