阿里云飞天发布时刻,领先大模型限免,超7000万 tokens免费体验 了解详情
写点什么

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:033706
用户头像

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

关注

评论

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

从 DeepSeek 看25年前端的一个小趋势

极客天地

通义灵码与魔搭 Notebook 深度集成:在线编码开箱即用,开发效率倍增

阿里云云效

阿里云 云原生 通义灵码

抖音商品详情 API 接口(dy.item_get)全解析

tbapi

抖音API 抖音商品详情API

数智先锋 | 博睿数据赋能蒙牛集团构建大型企业的应用高级可观测能力

博睿数据

量子计算与人工智能的结合:未来科技的双重革命

天津汇柏科技有限公司

人工智能 量子计算

TiDB 亮相宜昌“医院‘云数智’技术实践研讨及成果展示交流会”,探讨国产化 + AI 背景下的数据库新趋势

PingCAP

人工智能 数据库 云计算

Go 语言常见错误——标准库

FunTester

仅3步!即刻拥有 QwQ-32B,性能比肩全球最强开源模型

阿里巴巴云原生

阿里云 Serverless 云原生

火山引擎智能数据洞察 ChatBI 适配 DeepSeek-R1 及 DeepSeek-V3

Lily

API调用类型全面指南:理解基础知识

数据追梦人

MyBatis动态SQL太繁琐?飞算JavaAI自动生成高效数据库操作代码

飞算JavaAI开发助手

MacBook 跑通 :火山引擎 视频实时理解​

Lily

SSL证书不可信的原因有哪些?(国科云)

国科云

堡垒机软件有哪些?举例一个说说!

行云管家

网络安全 堡垒机 云堡垒机

网络安全等级保护分为几级?

黑龙江陆陆信息测评部

埋点系统客户案例-金融媒体为何选择ClkLog替换10万年费的SaaS平台?

ClkLog

开源 埋点 行为分析 画像

Superchain Interoperability:从碎片化跨链流动性到统一原生流动性层的未来

NFT Research

blockchain web3、

ClkLog埋点分析系统-Flutter埋点上报攻略

ClkLog

开源 埋点 用户行为分析 画像

智能制造:ERP的发展介绍与理解感悟

积木链小链

数字化转型 制造业 智能制造

淘宝商品详情API+拍立淘实战:如何用技术重新定义"找货"?

代码忍者

淘宝API接口

飞算JavaAI生成SpringBoot全模块代码实战

飞算JavaAI开发助手

Apipost协议全栈支持+国密算法,调试效率飙出星际!

数据追梦人

腾讯云AI存储解决方案持续升级,为AI全业务场景提供全面支持

极客天地

深度解析:通过 AIBrix 多节点部署 DeepSeek-R1 671B 模型

极客天地

AI时代的数据底座:火山引擎多模态数据湖的设计与实践

极客天地

25年河南等级保护测评公司名单看这里!

行云管家

网络安全 等保 等保测评

1688商品详情API接口(1688.item_get)

tbapi

1688API 1688数据采集 1688商品详情API

昇腾CANN算子共建仓CANN-Ops正式上线Gitee,首批算子已合入

华为云开发者联盟

人工智能 算子 昇腾CANN DeepSeek

推理性能提升13倍,延时缩短超4倍丨实测焱融YRCloudFile KVCache

焱融科技

AI推理 #分布式文件存储 KVCache

Kafka 4.0 重磅升级:架构革新与性能飞跃,全面拥抱 KRaft 时代!

测试人

人工智能

通义灵码与魔搭 Notebook 深度集成:在线编码开箱即用,开发效率倍增

阿里巴巴云原生

阿里云 云原生

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