写点什么

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

评论

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

Spark SQL分析层优化

数新网络官方账号

如何让Android的前端页面像iOS一样“优雅”?

阿里技术

ios 前端 异形屏 前端适配

《阿凡达》导演卡梅隆加入 Stability AI 董事会;Molmo 横空出世,开源多模态模型王座易位丨 RTE 开发者日报

声网

百度输入法AI请求次数累计超4亿,「超会写」全新升级

Geek_2d6073

数据资产管理实施路径盘点,一文读懂如何建设企业数据资产管理体系

袋鼠云数栈

通信系统仿真:飞行器集群协同控制纽带

DevOps和数字孪生

技术干货|热门仿真平台HyperMesh CFD功能详解:几何和网格(Part 1)

Altair RapidMiner

人工智能 智能制造 altair Hypermesh 仿真设计

Mac苹果电脑视频下载软件推荐:Downie 4 for Mac 激活版

你的猪会飞吗

Downie 4 下载 Downie 4 Mac版 Downie 4 for mac

AI Market创新升级:独立运营与全球首创交易模式同步亮相

科技热闻

给Java同仁单点的AI"开胃菜"--搭建一个自己的本地问答系统

京东科技开发者

百度ARM云全栈自研方案全新升级,普惠智算助力行业数智化转型

科技大数据

【YashanDB知识库】YashanDB-OCI-快速上手

YashanDB

yashandb 崖山数据库 yashandb知识库

写不好代码注释?这份注释指南一定要收好!

敏捷开发

程序员 敏捷开发 软件开发 代码注释 代码规范

云桌面 + 数字人:开启直播新纪元

Finovy Cloud

宇叠科技推出UDCAP VR手套:众筹数百万,开启虚拟交互新纪元

新消费日报

ETLCloud携手ClickHouse:高效的数据查询效率

RestCloud

数据库 数据处理 ETL 数据集成 Click house

想要激活孩子潜在力量,家长必做的一件事

心大陆多智能体

智能体 AI大模型 心理健康 数字心理

大模型还能产生幻觉?一文讲清楚原理和解决方法

敏捷开发

AI AIGC GPT LLM 大模型幻觉

等等,谁说我们小公司不能用IPD?

敏捷开发

项目管理 敏捷开发 IPD 集成产品开发体系

防御性编程:让系统坚不可摧

京东科技开发者

基于 LangChain 的自动化测试用例的生成与执行

测试人

软件测试

财务规划技术与思维的碰撞

智达方通

企业管理 全面预算管理 财务规划

Kubernetes存储新动力:CSD3000与Portworx的协同效应

ScaleFlux

Kubernetes Serverless 云原生容器 应用容器化

对 LLM 工具使用进行统一

快乐非自愿限量之名

LLM

基于 LangChain 的自动化测试用例的生成与执行

霍格沃兹测试开发学社

人人都能手写的chrome插件,帮我省了1000多块钱

京东科技开发者

构建未来电商体验:深度解析京东商品详情API的核心价值与应用

代码忍者

API 测试 pinduoduo API

仅需6步,实现虚拟物体在现实世界的精准放置

不在线第一只蜗牛

人工智能 HarmonyOS

一篇文章讲清楚synchronized关键字的作用及原理

EquatorCoco

Java Linux JVM

陶建辉被授予 2024 年“中国计算机学会(CCF)杰出工程师奖”,TDengine 技术创新力再获肯定

TDengine

数据库 tdengine 时序数据库

mac电脑安卓设备文件传输助手:MacDroid pro for mac 特别版

你的猪会飞吗

mac软件下载 Mac破解软件 MacDroid pro

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