首页 > 其他分享 >如何使用GraphQL和Apollo构建一个宝可梦应用

如何使用GraphQL和Apollo构建一个宝可梦应用

时间:2024-04-06 14:22:27浏览次数:15  
标签:pokemons 宝可梦 应用程序 GraphQL import Apollo pokemon

宝可梦是一个由视频游戏、动画系列与电影、交换卡牌游戏以及其他相关媒体组成的日本媒体特许经营权。

在本文中,我们将使用一个宝可梦GraphQL API,该API提供有关不同宝可梦的数据。

我们将使用Apollo和GraphQL来处理数据获取,以及React来构建我们的前端应用程序。

如果您不了解这些技术,也不用担心,我将会在您阅读的过程中为您介绍基础知识。

(本文内容参考:java567.com)

先决条件

您的计算机上应该有以下内容以便跟着做:

  • Nodejs v18+
  • 一个代码编辑器
  • 一个网页浏览器

让我们创建我们的React应用程序。

React应用程序设置

要创建您的React应用程序,请转到您的终端,并使用命令提示符。打开您的命令提示符,并选择您喜欢创建React项目的位置。让我们选择桌面。

cd Desktop

上述命令将导航到您的桌面。

npm create vite@latest pokemon-app -- --template react

npm create vite@latest 将开始使用Vite构建一个新项目。但是,我们附加了我们项目的名称(pokemon-app)以及我们应用程序将使用的技术或框架(-- -- template react)。

您可以设置另一个模板,如svelte、vanilla或vue,项目将使用该框架创建。在其官方网站上阅读更多关于Vite的信息。

安装Vite之后,运行以下命令:

cd pokemon-app
npm install
npm run dev

我们将使用上述命令完成React设置。

运行第一个命令cd pokemon-app,以导航到pokeman-app文件夹。

运行code .来在您的代码编辑器中打开该文件夹。

image

如果弹出对话框要求信任文件的作者,请标记信任作者复选框。

打开您的代码编辑器终端。如果您在Windows上运行VSCode,则快捷键是`Ctrl + ``。

在终端中依次运行其他2个命令。

npm install
npm run dev

您的项目现在应该在浏览器中运行。

我们将使用GraphQL和Apollo来管理我们的数据获取。

如何使用GraphQL和Apollo

GraphQL是一种用于API的查询语言,也是用于使用现有数据执行查询的运行时。它允许您在应用程序中仅请求所需的数据,而不多余,从而使其非常高效和灵活。

Apollo是一个状态管理库,允许您使用GraphQL管理本地和远程数据。它可用于获取、缓存和修改应用程序数据,同时自动更新您的UI。

让我们安装您需要的包。

安装包

在您的终端中运行以下命令以安装Apollo客户端。

npm install @apollo/client

导航到您的main.jsx文件并导入以下内容:

import React from "react";
import ReactDOM from "react-dom/client";
import App from "./App.jsx";
import {
  ApolloProvider,
  ApolloClient,
  InMemoryCache,
} from "@apollo/client";
import "./index.css";

您已经导入了React和ReactDOM用于DOM操作。

ApolloClient负责管理您应用程序的数据获取和状态管理。它负责将GraphQL查询和变异发送到GraphQL服务器并缓存结果。

ApolloProvider将用于包装您的React应用程序,以向所有组件提供Apollo客户端实例,以便您的应用程序可以通过Apollo客户端访问获取的数据。

InMemoryCache是一个缓存实现,用于将GraphQL查询的结果存储在内存中,以便高效地访问和检索。

您还导入了index.css来为您的应用程序设置样式。

如何创建Apollo客户端

const client = new ApolloClient({
  uri: "https://graphql-pokemon2.vercel.app/",
  cache: new InMemoryCache(),
});

以上代码使用了一些配置创建了ApolloClient的新实例:

  1. uri:这指定了您的GraphQL API端点的URL。这是您的Apollo客户端将发送GraphQL查询和变异的端点。
  2. cache:这配置了Apollo客户端的缓存实现,以使用内存缓存访问数据并存储GraphQL查询的结果,减少了从服务器重新获取数据的需要。

现在您可以将您的组件与ApolloProvider一起包装:

ReactDOM.createRoot(document.getElementById("root")).render(
  <React.StrictMode>
    <ApolloProvider client={client}>
      <App />
    </ApolloProvider>
  </React.StrictMode>
);

请注意,client属性也被传递以提供您的应用程序ApolloClient的配置。

转到您的App.jsx组件并输入以下内容:

import React from "react";
import { PokemonsContainer } from "./components/PokemonsContainer";

export default function App() {
  return (
    <main>
      <PokemonsContainer />
    </main>
  );
}

您导入了React和将要创建的PokemonsContainer。PokemonsContainer组件被包装在main标签中,并将在组件粘贴到DOM中时呈现。

让我们在位于components文件夹中的文件中创建PokemonsContainer组件。即:

标签:pokemons,宝可梦,应用程序,GraphQL,import,Apollo,pokemon
From: https://www.cnblogs.com/web-666/p/18117394

相关文章

  • Apollo注册中心docker-compose版本
    1、安装docker-ce#step1:安装必要的一些系统工具sudoyuminstall-yyum-utilsdevice-mapper-persistent-datalvm2#Step2:添加软件源信息sudoyum-config-manager--add-repohttps://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo#Step3sudosed-......
  • 为什么阿波罗机器人(Apollo)是外观最帅的机器人 ?
    资料:https://www.youtube.com/watch?v=3CdwPGC9nyk答案很简单,那就是这个公司单独找了一个外观设计团队,单独设计的外观。看来啥事情要想搞的好,那就得多花钱。......
  • GraphQL入门之分页查询
    前一篇文章讲了怎么创建GraphQL的查询操作,今天在此基础上看看要实现一个简单的分页查询应该怎么做,顺便可以介绍一下GraphQL里的枚举类型和查询参数应该怎么用。创建Node.js的工程mkdirmyappcdmyappnpminit(一路回车)安装依赖包npminstall@apollo/server......
  • docker-compose 部署apollo
    apollo-1.9.2docker-compose.yamlversion:'3'services:#模拟一个正常的mysql数据库mysql8:image:mysql:5.7restart:alwayscontainer_name:mysqlports:-3306:3306volumes:-./databases/mysql/logs:/var/log/mysql......
  • .net8集成Apollo配置中心步骤
    部署Apollo我这里按照官方文档使用docker快速部署了一个测试学习用。 创建应用 新增配置创建.net8版本的webapi项目 修改appsettings.json{"Apollo":{"AppId":"ApolloTest001","MetaServer":"http://127.0.0.1:8080"}}AppId是应用的身......
  • Python + Apollo 实现配置中心
    --coding:utf-8--importjsonimportosimportthreadingimporttimefromdatetimeimportdatetime,timedeltafromtypingimportOptionalimportrequestsimportLogConfigasloggingclassApolloClient(object):definit(self,app_id,cluster='defaul......
  • 【问题记录】【Apollo】修改业务配置参数需要重启服务么?
    1 前言最近发现小伙伴对于修改参数,要不要重启不太清楚,整的我都怀疑自己的认知了,我记得看Apollo源码的时候,它有个后置处理器,会收集哪个类的哪个属性需要注入,然后当配置变更的时候,会通过反射设置新的值的,这节我就来带大家看看。首先对于服务参数或者系统参数,比如端口、数据源......
  • Apollo系列之架构设计(一)
    原创文章,转载请标注。https:https://www.cnblogs.com/boycelee/p/17967590目录一、什么是配置中心?二、传统配置有什么问题?三、配置中心的场景四、架构设计(1)基础模型(2)详细架构六、模块介绍客户端层ClientPortal网络层NginxLBMetaServerEureka服务端层ConfigServiceAdminService......
  • Apollo之原理和使用讲解
    目录1Apollo1.1简介1.1.1背景1.1.2简介1.1.3特点1.2基础模型1.3Apollo四个维度1.3.1application1.3.2environment1.3.3cluster1.3.4namespace1.4本地缓存1.5客户端设计1.5.1客服端拉取原理1.5.2配置更新推送实现1.6总体设计1.7可用性考虑2操作使用2.1配置Apol......
  • absinthe elixir 的graphql 框架简单试用
    absintheelixir的graphql框架包含的特性graphql草案的完整实现插件化设计异步字段解析以及批量解析,同时支持插件化的解析支持安全包含了基于GraphiQL的playground项目测试基于了phoenix框架创建phoenix项目mixphx.newabsinthe_phx添加sqliteecto依赖默认phoenix使用了......