8 月 11 号,Facebook 发布了 Relay 的技术预览版,你可以在 Github 还有 npm 上找到。
Relay 是什么
React 简化了开发复杂的用户界面的过程,不过留下了一个问题,就是怎么跟服务端去交互数据。客户端与服务端的松藕合会导致一些跟数据相关的问题,而且会让迭代更困难。另外,工程师们经常需要重新的实施一些复杂的 Async 逻辑,不能去专注应用本身。Relay 考虑到了这些问题,也从 React 那里学了不少,它为应用提供了一种声明式的,面向组件的提取数据的方法。
声明式的数据提取的意思就是,Relay 应用可以指定一下它需要的数据都有什么,不需要说明怎么去提取这些数据。就像 React 那样,只需要描述一下想要的界面,不用考虑视图怎么去更新。Relay 用到了使用 GraphQL 查询的形式去描述需要的数据。Relay 会根据对数据的描述,为了提高效率把查询合并成批处理,去管理容易出错的 Async 逻辑,缓存数据提高性能,还可以在数据更改以后自动去更新视图。
Relay 同样是面向组件的,他可以扩展 React 的组件,然后说明一下都需要哪些数据去显示组件。这让工程师可以局部的去考虑他们的应用,而且可以消除不足或者过分的提取数据的错误。
Facebook 很多真正的应用都用到了 Relay ,而且用的越来越多,因为 Relay 让工程师们可以关注他们的产品,可以更快速的去开发。
第一个版本
Facebook 公开了 Relay 的技术预览版,这也是在 Facebook 内部使用的核心框架,不过也为能让 Relay 在 Facebook 以外可以使用做了一些调整。这是第一个版本,要注意可能会有一些没完成的或者缺少的功能。Facebook 会继续去开发 Relay,并且会与 GraphQL 社区紧密合并,确保 Relay 与 GraphQL 保持同步更新。
下一步
下一步 Relay 会支持离线,也就是在不联网的情况下,让应用可以查询还有队列更新。以后还会提供一个统一的交互接口,不仅仅可以与服务端数据交互,还可以是内存或者本地设备上的数据。未来 Relay 还会考虑不稳定的联网方式,让创建这样的应用变得更简单。