写点什么

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

评论

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

打破传统!华为云Flexus数字人重塑教培行业的营销模式

YG科技

打破“不可能三角”!华为云Flexus数字人完美契合中小企业需求

YG科技

从教育培训机构的角度谈谈,华为云Flexus数字人对中小企业有何价值

轶天下事

Rego 101

大可不加冰

OPA rego policy-as-code kubernetes gatekeeper

数字人加速奔向大众生活!华为云Flexus数字人完美契合中小企业需求

YG科技

提高营销效率、革新营销方式!华为云Flexus数字人全面赋能中小企业

YG科技

门槛更低、效果更好!华为云Flexus数字人开启数字化营销新时代.

YG科技

提升运营效率、降低获客成本,华为云Flexus数字人有效赋能医疗机构

YG科技

华为云Flexus数字人全场景渗透,赋能千行百业营销升级

轶天下事

推动数字人技术红利下沉!华为云Flexus数字人引领营销方式变革

轶天下事

超低门槛体验华为云Flexus数字人,让数字人技术不再“高高在上

YG科技

推动数字人技术广泛应用!华为云Flexus让创作更简单、更高效

轶天下事

便捷、省心、超值体验!华为云Flexus数字人持续拓宽中小企业应用场景

轶天下事

千元级成本、小时级制作时长,华为云Flexus数字人有多高效?

轶天下事

以技术进步创造普惠价值!华为云Flexus数字人赋能中小企业营销创新

轶天下事

步入“寻常百姓家”!华为云Flexus数字人进一步降低技术使用门槛

YG科技

零经验也能轻松上手!华为云Flexus数字人专为中小企业而生

YG科技

使用阿里云操作系统控制台排查内存溢出

Yan-英杰

服务器 云服务

华为云Flexus数字人制作高效、性价比高,助力教育营销焕新升级

YG科技

华为云Flexus数字人创新技术,赋能中小企业打造个性化营销体验

轶天下事

全方位融入生活!华为云Flexus数字人助力中小企业实现商业成功

轶天下事

低成本高效率,华为云Flexus数字人解锁中小企业增长新密码!

轶天下事

医疗科普新助力!华为云Flexus数字人引领行业变革

轶天下事

缺创意、缺流量、缺客户?华为云Flexus数字人赋能中小企业营销创新

YG科技

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