写点什么

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:217257

评论

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

2025大型企业财务数智化峰会·上海站成功举办!

用友智能财务

AI 财经 财务 会计

“企业级敏捷教练课程” 6月7-8日 · CSP-SM认证周末班【报名即赠敏捷漂流记】

ShineScrum

敏捷 CSP-SM

河南科技学院领导一行莅临和鲸科技考察交流,AI 引领培育兴农英才

ModelWhale

人工智能 大数据 AI 农业 大语言模型

《Operating System Concepts》阅读笔记:p354-p358

codists

操作系统

销售增长新解法:DeepSeek企业知识库驱动效率革命

人称T客

自动化测试的 8 个最佳实践

FunTester

淘宝商品数据API接口实战指南|手把手教你获取商品详情和全店数据(避坑版)

代码忍者

淘宝API接口

“全球金牌敏捷课程” · 4月19-20日CSM认证课程 · Jim老师引导讨论AI & Agility话题

ShineScrum

敏捷 项目开发 CSM认证 CSM认证培训

如何从工作中获得成就感

老张

职场成长 认知

访问受限、账号封禁、匿名性不足?动态住宅代理解决这些难题

kookeey代理严选

Python 动态代理 爬虫技术 海外直播 全球广告投放

Coremail全面对接DeepSeek,开启办公效率新革命

科技热闻

智慧园区,智慧工地,智慧物业等建设方案(PPT))

金陵老街

智慧园区

1688批发数据API接口深度解析|从商品详情采集到供应商对接全攻略(避坑+实战)

代码忍者

1688API接口

什么是CNAME记录?设置CNAME记录需要注意哪些事项?

国科云

优化成本与效率:低代码平台构建企业级应用的技术探析

JeeLowCode低代码平台

低代码 低代码平台 低代码凭条 低代码, 低代码选择

数据可信、隐私可控:CESS 如何打造波卡生态数据新基建?

One Block Community

区块链 开发 web3

LED显示屏租赁:点亮活动的“灵活之光”

Dylan

发布会 LED LED display LED显示屏 虚拟演唱会

安装CST的Linux版本教程

思茂信息

cst电磁仿真 CST软件 CST Studio Suite

“领导企业转型必修课” 6月21-22日敏捷领导者(CAL1)认证周末班

ShineScrum

敏捷 CAL

道路养护设计系统(源码+文档+讲解+演示)

深圳亥时科技

从湖仓分离到湖仓一体,四川航空基于 SelectDB 的多源数据联邦分析实践

SelectDB

数据库 hadoop 湖仓一体 湖仓融合 航空运输

性价比很高的国产ITSM软件工具推荐:轻帆云,让IT服务管理既高效又省钱!

云智慧AIOps社区

ITSM ITSM软件 工单管理 工单系统 智能工单

币圈不设防第三期回顾:中东资本入场,加密市场格局将如何重塑

TechubNews

Java 单例模式与线程安全

知识浅谈

Java 单例模式

WebGL开发VR软件的优化

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

VR开发 软件外包公司 webgl开发

售票系统(源码+文档+讲解+演示)

深圳亥时科技

网上纪念馆(源码+文档+讲解+演示)

深圳亥时科技

弹性扩展何以助力 Polkadot 2.0 触达无缝互操作的理想愿景?

One Block Community

技术 开发者 polkadot

WebGL开发VR软件框架

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

VR开发 软件外包公司 webgl开发

从 Web2 到 Web3,她做对了什么使其成为行业资深大牛?

One Block Community

开发 web3

夜莺监控 v8.0 新版通知规则 | 对接飞书告警

巴辉特

夜莺监控 夜莺告警 飞书告警 通知规则 夜莺通知

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