HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

Apollo 项目:成为新技术早期使用者的弊端

  • 2019-09-03
  • 本文字数:1806 字

    阅读完需:约 6 分钟

Apollo项目:成为新技术早期使用者的弊端

本文是 CodePen 的技术人员 Cassidy 在学习使用 Apollo 过程中总结的学习经验和心得体会。Cassidy 鼓励开发者学习新的技术,成为早期使用者并为该技术的社区建立与发展做出贡献。



当人类决定尝试登陆月球时,需要从头开始为该项目发展大量的先进技术。这是一项艰苦、昂贵、且耗时的工作,并且会走很多弯路。这就是成为新技术的早期使用者的弊端。如果你正在探索一门新技术,当遇到技术难题时,周围很大可能没有经验丰富的专家可以回答你的问题。


多年来,我一直在 CodePen 工作,最近我们决定切换React代码顶层的堆栈,以使用 Apollo 和 GraphQL,在这个过程中我积累了一些非常棒的学习经验。我个人很喜欢使用 Apollo,它能够以非常模块化的方式管理组件,这与使用 Redux 管理组件的方式不同。


但是,因为Apollo是一种相对较新的技术,所以当团队采用它并随着它的发展而学习时,肯定会有一些优点和缺点。当我第一次查找 Apollo 相关问题的答案时,基本没有多少回答。当决定学习一些相对年轻的技术时,即使是简单的问题,也很难找到相关支持。因此,你只能自己去寻找问题的突破口,可以把这当成是一次难得的学习机会。这也意味着你可以投身到建立与塑造一个新技术的社区的过程中,同时,当其他人开始看到你提供的解决方案时,你会获得相应的回报。


Apollo 是一个单一查询系统,可以帮助你在大规模项目中运行GraphQL。它为你建立了一个数据图表,让所有的微服务和客户端以完全相同的方式相互通信。为了更好地理解,让我们来看一个例子。


对于 CodePen 的前端,我们希望给定的组件中获得有关当前登录用户的数据。以前,如果我们想要这些信息,我们必须设置某种中间件来处理调用,或者在某处调用一些 Action,或者在 componentDidMount 中粘贴一个 API 进行调用,然后确保对我们需要的所有不同数据元素进行单独调用。至少,我们需要与后端团队交谈,以确保我们能够以想要的格式获取数据。使用 Apollo,我们可以在组件顶层填充一个小块,它将返回当前登录用户的 ID,以及他们是否是 CodePen Pro 用户。代码如下所示:


const SESSION_USER = gql`  query CreateSessionUser {    sessionUser {      id      pro    }  }`;
复制代码


现在,假设我们需要更多的数据,例如还需要获取他们的头像和用户名。我可以只修改我的查询代码,而不是进行另一次查询,或联系后端团队以将这些信息添加到 API 端点。修改后的查询代码如下所示:


const SESSION_USER = gql`  query CreateSessionUser {    sessionUser {      id      pro      avatar      username    }  }`;
复制代码


获取到我想要的数据就是这么简单,这就是拥有单一数据图的好处。如果数据被包含在图表中,那么你就可以直接查询它,并且前端有足够的权限根据你的需求获取和使用该数据。这种新技术的出现是非常新鲜和令人兴奋的,至少在我们遇到难以解决的问题前是这个样子。


我在使用 Apollo 的过程中遇到的很多问题之一就是它的报错功能尚未成熟。Apollo 系统返回的报错信息大都太过宽泛,所以如果你不熟悉整个 Apollo 的框架就很难调试对代码进行调试工作。有一次我在 Stack Overflow 上寻找答案,试图弄清楚组件出了什么问题,令我震惊的是没有什么答案,甚至关于 Apollo 的话题都没有多少。通常,当我在 Stack Overflow 上询问某些内容时,我可以在一小时左右获得大量答案。但是这次,我等了几个星期仍然没有收到回应。


因为没有找到有效的答案,所以我不得不深入了解并熟悉那些让 Apollo 能够工作的代码。我的 Apollo 问题得到了一些评论,但实际上在一个月的时间里并没有得到多少有效答案,最终是我自己回答了这个问题。根据遇到问题的人数来判断框架是新的还是受欢迎的,这不是很有趣吗?Vue.js 目前在 Stack Overflow 上有大约 38.5k 的问题, React 有超过 150k 的。截至这篇文章撰写的时候,Apollo 仅有 5000 个,约三分之一来自过去 6 个月!


很高兴看到 Apollo 在开发者社区种越来越收到关注了。通过统计 Stack Overflow 的问题,GitHub 的相关 Issue,甚至是 Twitter 主题,你可以看到人们越来越乐于分享他们遇到的问题以及学到的新知识。


我想对开发人员说:当开始使用全新的技术时,可以尝试提出问题,撰写博客文章,在社交媒体上分享,并对发现持开放态度,因为你永远不知道可以帮助谁,分享的越多,其他人就越容易找到你并回报你的付出。


原文链接:


https://stackoverflow.blog/2019/08/28/apollo-graphql-codepen-data-microservices-early-adopter/


2019-09-03 09:217067

评论

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

MacDroid Pro:Mac电脑和Android设备之间的文件传输和数据管理

Rose

数据传输 MacDroid pro 安卓手机数据传输助手

Serial for Mac v2.0.17激活版 全功能串行终端管理软件

Rose

大数据处理与智慧营销系统性能优化

鲸品堂

大数据 营销 流程化 企业号2024年8月PK榜

如何做好API安全

德迅云安全杨德俊

6 个Spring tx 事务注解:4种隔离&7种事务传播业务案例(必须收藏)

肖哥弹架构

Java spring 注解

fxfactory视觉特效下载 FxFactory 8 Pro mac破解资源

Rose

FxFactory Pro 8 fxfactory视觉特效

mac防火墙软件Radio Silence 完整激活版 支持M1/M2

Rose

锐起安全会议室方案:提升涉密会议效率与安全级别!

上海锐起科技

信息安全 文件管理 涉密会议

企业数据怎么定义?包含哪些?如何保护企业数据?

行云管家

数据安全 企业数据安全 企业数据

一站式系统清理维护工具MacBooster 8 Pro Mac中文版

Rose

苹果电脑系统优化 MacBooster 8 Pro 系统清理维护 MacBooster 破解版

小程序技术为什么是轻量级前端架构?

Geek_2305a8

必看!文档版本管理工具大比拼

爱吃小舅的鱼

文档管理

如何挑选符合你需求的任务管理工具

爱吃小舅的鱼

待办事项管理

coconutBattery Plus:苹果mac电脑 电池健康检测工具

Rose

Parallels Desktop 19完美破解版 附PD虚拟机永久密钥

Rose

Parallels Desktop 19 Parallels虚拟机下载 Mac虚拟机安装 PD19密钥

扬帆蓝海,智起未来!和鲸科技助力第十三届全国海洋航行器设计与制作大赛智能感知赛道精彩收官!

ModelWhale

Word 2021 LTSC for Mac永久破解版 含word激活工具 支持M1/M2

Rose

Word 2021 许可证 Word 2021破解版 Word 2021 mac

极简接入|七牛云 QPlayer2 播放器再升级

七牛云

音视频开发 播放器

香城档案利用 NocoBase 快速实现智能档案管理

NocoBase

低代码 无代码 档案管理

小小的引用计数,大大的性能考究

bin的技术小屋

Netty Java' netty

TON链上游戏项目开发基本要求及模式创建与海外宣发策略

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

如何将MySQL迁移到TiDB,完成无缝业务切换?

NineData

MySQL 迁移 TiDB 迁移复制 一键迁移

简历,需要和求职岗位匹配

老张

裁员 职场成长 求职面试

监理单位项目管理系统选型必看指南

爱吃小舅的鱼

项目管理

倒计时3天!数智时代下大数据应用的“道”与“术”闭门会议即将开幕

望繁信科技

数字化转型 流程挖掘 流程智能 智能化应用

泉州等保测评机构电话是多少?在哪里?

行云管家

等级保护 等保测评 泉州

基于“日志审计应用”的 DNS 日志洞察实践

阿里巴巴云原生

阿里云 云原生 sls

新手指南:轻松选择生产工时管理系统

爱吃小舅的鱼

工时管理

IntelliJ IDEA中文版安装教程 附IntelliJ IDEA永久激活码2024最新

Rose

代码编辑 IntelliJ IDEA中文版 IntelliJ IDEA2024安装 intellij idea激活码2024

中文汉化版Bartender 5 mac下载 菜单栏图标管理软件

Rose

Bartender 5中文版 Bartender 5破解版 Mac菜单栏管理工具

币价与数据持续低迷,比特币和以太坊能否从低谷中恢复?

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

Apollo项目:成为新技术早期使用者的弊端_文化 & 方法_Cassidy Williams_InfoQ精选文章