把握行业变革关键节点,12 月 19 日 - 20 日,AICon北京站即将重磅启幕! 了解详情
写点什么

Facebook 开源 Relay 技术预览版

  • 2015-08-21
  • 本文字数:1260 字

    阅读完需:约 4 分钟

为了解决前端渲染网站遇到的性能及 SEO 问题,Facebook 在 2014 年推出了用于构建 UI 的 JavaScript 库—— React 。之后,在 2015 年 1 月份召开的 React.js 会议上,Facebook 又公开了在 React 上应用 GraphQL Relay 框架。近日,Facebook 终于发布并开源了Relay 的技术预览版。接下来,本文就对Relay 进行简要介绍。

首先,本文对React 和GraphQL 进行简要说明。React 框架以其组件和基于组件的设计流程、单向的数据流动、采用虚拟DOM 作为操作对象和在JavaScript 中声明式的描述UI 等特性,为web 应用开发带来了诸多好处,变革着相关开发人员的开发体验。然而,React 在与服务器中的数据进行交互方面存在着一定的问题。客户端与服务器端脆弱的耦合方式经常引起数据相关的问题,而且使得产品的迭代越来越难。而且,开发人员不得不根据产品的发展,不断的重新实现复杂的异步逻辑。另外一方面,GraphQL 是Facebook 已经在原生应用上使用多年的、用于描述复杂嵌套的数据依赖的查询语句。GraphQL 支持更加灵活的查询方式,使得前端与后端工程师可以更加高效的进行合作,成为解决React 中数据交互问题的可能方案。因此,随着React 的崛起,如何在React 中使用GraphQL 已经变为迫切需求。为此,Facebook 在今年初提出了Relay。

Relay 充分吸取了 React 之前的经验和教训,提出了声明式、面向组件的数据抓取方式。声明式的数据抓取意味着 Relay 应用直接指定所需要的数据内容。正如 React 使用的声明式 UI 的一个描述来管理视图更新一样,Relay 以 GraphQL 查询的方式来使用声明式数据。给定这些描述,Relay 自动完成查询打包、异步通信逻辑的管理、数据缓冲以及随着数据变化而自动更新视图等工作。面向组件的方式使得 GraphQL 查询可以根据需求精确描述所需要的数据。这就可以有效避免数据取少或者取多可能引起的问题。

Relay 架构主要包括了 Relay 组件、Action、Relay Store 和服务器四部分。在 Relay 中,每个组件都可以自定义其所需要 GraphQL 数据格式。在组件实例化的时候,它会向 GraphQL 服务器发送请求,然后使用 this.props 从 Relay Store 中访问获取到的数据。而当数据变化时,Relay 通过 Action 通知相应组件更新,并在客户端的 Relay Store 中维护一份数据缓存。此外,为了提高数据传输的效率,Relay 支持开发者自由地组合 React 组件,并自动构建嵌套组件的 GraphQL 查询,把多个组件的小请求合并为一次 GraphQL 请求。

目前,Relay 技术预览版的相关代码已经依托在 GitHub 中。用户利用 git clone 下载版本库后,即可进行安装和体验。由于该版本只是预览版,Facebook 团队表示,Relay 在某些方面肯定存在不完美的地方。该团队会与GraphQL 社区合作,及时进行版本更新。未来,Relay 将会在离线支持、实时更新和扩展等方面进行进一步的发展。


感谢徐川对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群InfoQ 好读者)。

2015-08-21 19:033907
用户头像

发布了 268 篇内容, 共 137.6 次阅读, 收获喜欢 24 次。

关注

评论

发布
暂无评论
发现更多内容

OHDC.2025 | 大屏生态分论坛:共建共享,共赢未来

极客天地

OHDC.2025 | Web与W3C标准分论坛:共商共建,共筑未来

极客天地

OHDC.2025 | 硬件生态分论坛:共筑开源鸿蒙硬件新生态

极客天地

从0到1:多医院陪诊小程序开发笔记(上)

CC同学

互联网一线大厂最新版 Java面试八股文

Geek_Yin

Java 程序员 Java面试题 Java面试八股文

最系统的Java八股文大全(25技术栈完整脑图+源码解析)

Geek_Yin

程序员 java面试 Java面试题 Java面试八股文

618来袭!强性能、快散热、高颜值,搭载英特尔酷睿Ultra处理器的华硕笔记本带来非凡体验

E科讯

iVX+ARM 边缘计算技术架构解析:从底层架构到行业应用

代码制造者

Alluxio AI助力知乎千卡模型训练

Alluxio

jobleap.cn解决了哪些传统招聘软件没解决的问题

Y11

求职 找工作 招聘 秋招 春招

2025年有哪些高效且前沿的求职技巧,可以助我找到更好的工作

Y11

面试 求职 找工作 招聘 秋招

基于YOLOv8的路面缝隙精准识别项目【完整源码数据集+PyQt5界面+完整训练流程+开箱即用!】

申公豹

yolo

直播APP的开发流程

北京木奇移动技术有限公司

直播app 软件外包公司 APP外包公司

智能驾驶感知算法任务简介

地平线开发者

自动驾驶; 算法工具链 地平线征程6

前端工具方法整理

刘大猫

Java 数组 js 格式化字符串 刷新页面

数据仓库 vs 数据库:核心区别与应用场景全解析

镜舟科技

数据库 数据仓库 OLAP OLTP StarRocks

如何利用jobleap.cn提高简历通过率和面试成功率

Y11

找工作 招聘 秋招 春招 找实习

jobleap.cn的简历优化功能可以如何使用

Y11

面试 求职 简历优化 找工作 找实习

OHDC.2025 | AI分论坛:探索开源鸿蒙AI无限可能

极客天地

鸿蒙版微信小程序不可用,一文告诉你10分钟修复

最新动态

懒懒笔记 | 课代表带你梳理【RAG课程 9&10:大模型微调与思维链蒸馏】

商汤万象开发者

中国国内最好的求职招聘软件有哪些

Y11

求职 找工作 招聘 秋招 春招

OHDC.2025 | 统一互联分论坛:All Devices,One Connect

极客天地

OHDC.2025 | Watch生态分论坛:共绘腕间设备新蓝图

极客天地

Claude 语音版曝光,可通过对话搜索文档、撰写邮件;ElevenLabs 已支付音频样本演员超 500 万美元丨日报

RTE开发者社区

2025年在哪里可以找到开始秋招的公司?

Y11

找工作 招聘 应届生 秋招 找实习

“全球金牌敏捷课程” · 6月10-12日CSM认证课程

ShineScrum

Facebook开源Relay技术预览版_Meta_张天雷_InfoQ精选文章