发布于:2020-12-31 13:40:59
0
116
0
当人类决定尝试登陆月球时,他们不得不从头开始为该项目发明很多技术。这是一项艰苦,昂贵,耗时的工作,有很多错误的转折和死胡同。这就是使用没有人经验的系统时的感觉。当您遇到困难时,没有经验丰富的人来回答您的问题。
我是卡西迪•威廉姆斯(Cassidy Williams),我一直在CodePen团队中工作。最近,我们决定切换堆栈以 在React代码之上使用Apollo和GraphQL,这是一个很棒的学习经验。我个人喜欢我们如何非常模块化地组织组件,这与我们使用Redux进行组织的方式不同。但是,由于Apollo是一项相对较新的技术,因此在团队采用它并随着它的发展而不断学习时,肯定会有一些利弊。
当我第一次寻找与Apollo有关的问题的答案时,那里并没有太多东西。当您决定投资一个相对较年轻的技术时,即使是简单的问题,也很难找到支持。这迫使您自己寻找内幕,这可能是学习的好方法。这也意味着您可以帮助建立和塑造新生的社区,并在其他人开始看到您帮助提高的工具中的价值时获得回报。
对于那些不知道Apollo是什么的人,它是一个单一的查询系统,可帮助您在项目中大规模运行GraphQL。它为您建立了一个数据图,以使您的所有微服务和客户端以完全相同的方式相互交谈。
仅凭单词很难解释,所以让我们通过一个例子来谈谈。在CodePen的前端中,在给定的组件中,我们可能希望获取有关当前登录用户的数据。以前,如果我们需要这些信息,我们必须设置某种中间件来处理调用,或在某处进行调用操作,或者只是将API调用保留在componentDidMount中,然后确保对所有不同的组件分别进行调用我们需要的数据元素。至少,我们需要与后端团队联系,以确保我们以所需的格式获取数据。使用Apollo,在组件顶部,我们可以在这里放置这个小块,它将返回当前登录的用户,其ID以及他们是否是CodePen Pro用户。代码如下:
现在,假设我实际上需要的数据更多,并且还需要获取他们的头像和用户名。无需进行其他查询或与后端团队联系以将该信息添加到API端点,而只需修改查询即可:
瞧,我有我的数据!这就是拥有单个数据图的力量。如果数据在图形中,则可以对其进行查询,并且前端可以根据需要获取和使用该数据。
现在,这并不意味着要成为Apollo的推销员。Apollo很棒,但是它也是新的,并且仍然在开发社区中立足。通常,当有新事物出现时,它会非常新鲜和令人兴奋,并且如果它引入了新的概念供我们作为开发人员使用,那么这将是一个有趣的新世界。至少,直到我们遇到问题为止。
我在Apollo中遇到的很多事情之一就是它的错误消息令人非常不满意。他们有相当普通的消息发送给您,因此如果您不熟悉它,可能很难调试。
因此,有一天,我去了很好的Stack Overflow,尝试找出组件的问题所在。而且,令我震惊的是……那里没有答案。完全没有关于这个主题的问题!通常,当我在Stack Overflow上提出问题时,我可以在一个小时左右的时间内得到很多答案。我等了几个星期,但没有回应。
因为我没有一个可用的答案,所以我不得不仔细研究并真正熟悉使Apollo正常工作的代码。再次,这是一个权衡。这花费了很多时间,精力和挫败感。但是通过这种方式教给我很多东西。这也有助于揭开别人建造的黑匣子的神秘感,使我充满信心,无论他们看起来多么出色,我都可以理解这个工具以及创作者。
我的Apollo问题有一些评论,但实际上一个多月没有得到答案。经过几个同事的讨论,我最终自己回答了这个问题,然后我仔细研究了这个问题。您如何通过遇到问题的人数来判断框架是多么新颖或流行,这不是很有趣吗?Vue.js目前在Stack Overflow上有大约38.5k个问题。React有超过150k。Apollo?在撰写本文时,不到5,000个问题,其中约三分之一来自过去6个月!
很高兴看到Apollo在开发者社区加快了步伐。仅基于Stack Overflow问题,GitHub问题甚至Twitter线程,您就会看到人们感到兴奋,并分享他们遇到的困难和所学到的东西。
给开发人员的我的动作项目:当您开始使用崭新的,闪亮的技术时,请谈论它!提出问题,撰写博客文章,在社交媒体上分享以及公开您的发现。您永远不知道可以为谁提供帮助!您分享的内容越多,其他人就会更容易找到您并回报您的青睐。
作者介绍