亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

JS前端可視化GraphQL使用詳解

 更新時間:2022年08月02日 09:55:01   作者:前端修羅場  
這篇文章主要為大家介紹了JS前端可視化GraphQL使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

正文

了解事物幕后的運作方式往往有好處,但并非總是如此。 因為不必使事情過于復雜。而可視化圖形界面在處理這么一個場景中,是首當其沖的。

在本文中,我將帶你了解如何使用 GraphiQL 來輔助 GraphQL 的開發(fā)。

什么是 GraphQL?

在我們談論 GraphiQL 之前,讓我們先談談 GraphQL

GraphQL 是一種用于應用程序編程接口 (API) 的開源數(shù)據(jù)查詢和操作語言,也是一種使用現(xiàn)有數(shù)據(jù)完成查詢的運行時。

GraphQL 于 2012 年由 Facebook 內(nèi)部開發(fā),然后于 2015 年向公眾發(fā)布。

與 REST方法相比,開發(fā)人員更喜歡它,但本篇文章我們不會關(guān)注關(guān)于 RESTful 方法和 GraphQL 的優(yōu)缺點的比較。

什么是 GraphiQL?

現(xiàn)在,如果你熟悉 RESTful API,你可能會知道 Postman 和 Insomnia 之類的工具,因為它們不僅可以幫助我們快速可視化 API 開發(fā),還可以幫助我們更快地完成工作。

同樣,你可以將 GraphiQL 視為 Postman 或 Insomnia。 因為 GraphiQL 是 GraphQL 集成開發(fā)環(huán)境 (IDE)。

它這是一個強大的工具,可以幫助你直觀地構(gòu)建 GraphQL 查詢的工具。

在我們開始學習之前,希望你具備以下知識:

  • 對 Node.js, npm 有基本了解;
  • 了解基本的 express.js 搭建服務器的設(shè)置;

開始

我們正在構(gòu)建一個 express.js 服務器,它是一個 Node.js 函數(shù)并將其放入變量的地方;應用程序。

現(xiàn)在,我們將創(chuàng)建一個文件夾來存放我們的項目文件。

進入新創(chuàng)建或所需的文件夾后,在命令行界面 (CLI) 上運行它:

npm init -y

這將在你所在的文件夾中創(chuàng)建一個 package.json 文件。

接下來要做的是安裝我們項目所需的依賴包。 運行:

npm install graphql express-graphql express。

你應該將 "dev": "node app.js" 添加到 package.json 文件中的 script 對象中:

script: {
  "dev": "node app.js"
}

安裝完成后,你的 package.json 文件應如下所示:

因為 express.js 不知道 如何與 graphql 進行通信,所以我們安裝了 express-graphql 依賴包。

接著,在你的文件夾中,創(chuàng)建一個名為 app.js 的文件并填入以下代碼:

//app.js 
const express = require('express');
const { graphqlHTTP } = require('express-graphql');
const schema = require('./schema/schema');
const app = express();
// bind express with graphql
app.use('/graphql', graphqlHTTP({
    schema,
    graphiql: true
}));
app.listen(2020, () => {
    console.log('now listening at port 2020');
});

這段代碼是我們工作的切入點。

在第 4 行,我們引入了一個自定義路徑 schema.js。后面我會提到它。

然后第 5 行是我們實例化 express 函數(shù)并將其賦值給 app 這個常量。

從第 7 行到第 10 行,我們首先調(diào)用 app.use(),它允許我們在 express.js 中注冊中間件。

每當我們點擊路由 /graphql 時,它始終會調(diào)用 graphqlHTTP() ,并添加對象。

我們希望能夠以圖形方式看到正在發(fā)生的事情,因為我們給 graphiql 一個“true”值。

現(xiàn)在,在項目的文件夾中創(chuàng)建一個文件夾。然后在剛剛創(chuàng)建的文件夾中,創(chuàng)建一個名為 “schema.js” 的文件。

將以下代碼填入到 schema.js 文件中:

// schema.js
const graphql = require("graphql");
const _ = require("lodash");
const { countries } = require("./country");
const { GraphQLObjectType, GraphQLString, GraphQLSchema, GraphQLID } = graphql;
const CountryType = new GraphQLObjectType({
  name: "Country",
  fields: () => ({
    id: { type: GraphQLID },
    name: { type: GraphQLString },
    capital: { type: GraphQLString },
  }),
});
const RootQuery = new GraphQLObjectType({
  name: "RootQueryType",
  fields: {
    country: {
      type: CountryType,
      args: { id: { type: GraphQLID } },
      resolve(parent, args) {
        return _.find(countries, { id: args.id });
      },
    },
  },
});
module.exports = new GraphQLSchema({
  query: RootQuery,
});

代碼中我們使用到了 lodash 這個包,所以請在命令行中運行:npm intsall loadash 以安裝它。

schema 文件夾中,我們需要創(chuàng)建一個名為 country.js 的文件并填入以下代碼:

const countries = [
    { name: 'Portugal', capital: 'Libson', id: '1' },
    { name: 'Canada', capital: 'Ontario', id: '2' },
    { name: 'Nigeria', capital: 'Abuja', id: '3' },
];
module.exports = {countries};

最后,你的項目文件夾應如下所示:

現(xiàn)在,回到 schema/schema.js。

從第 2 行到第 5 行,我們導入 schema/country.js 的內(nèi)容,該內(nèi)容的結(jié)構(gòu)與 GraphQL 服務器所需的內(nèi)容結(jié)構(gòu)是保持一致的。

從第 6 行到第 13 行,變量 CountryType 由來自 graphql 的 GraphQLObjectType() 方法實例化。 其中有兩個屬性:name 和 fields。

name 的值為 “Country”,其中作為屬性的字段也是一種隱式返回對象(id; name capital)的方法。

從第 14 行到第 25 行,我們有一個新的 GraphQLObjectType() 實例,它被放在變量 RootQuery 中。 我們看到我們正在使用 Loadash 通過 id 返回 countries。

如果一切都正確完成,你應該能夠在 GraphiQL 界面中運行你的 GraphQL。

運行 npm run dev

然后,在你的瀏覽器中,轉(zhuǎn)到 http://localhost:2020/graphql,你應該會看到:

是的,現(xiàn)在你可以使用 GraphiQL 界面測試你的 API。 你可以嘗試通過在瀏覽器中粘貼以下內(nèi)容來獲取我們 country.js 中 id 為 1 的 name 和 capital:

{
  country(id: 1) {
    name
    capital
  }
}

完成此操作后,點擊“Play”圖標,你應該會在屏幕的另一側(cè)看到如下響應:

結(jié)尾

現(xiàn)在,我們已經(jīng)完成了關(guān)于如何使用 GraghQL 的默認可視化工具 GraphiQL 可視化你的 GraphQL 模式的教程。

我們也已經(jīng)看到 GraphQL 提供了一種很好的方法來查詢 API 中的某些內(nèi)容。

以上就是JS前端可視化GraphQL使用詳解的詳細內(nèi)容,更多關(guān)于JS前端可視化GraphQL的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 微信小程序 傳值取值的幾種方法總結(jié)

    微信小程序 傳值取值的幾種方法總結(jié)

    這篇文章主要介紹了微信小程序 傳值取值的幾種方法總結(jié)的相關(guān)資料,這里對這幾種方法進行了詳解,并附示例代碼,需要的朋友可以參考下
    2017-01-01
  • 微信小程序 定位到當前城市實現(xiàn)實例代碼

    微信小程序 定位到當前城市實現(xiàn)實例代碼

    這篇文章主要介紹了微信小程序 定位到當前城市實現(xiàn)實例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • 超越Node.js的JavaScript運行環(huán)境Bun.js功能特性詳解

    超越Node.js的JavaScript運行環(huán)境Bun.js功能特性詳解

    這篇文章主要為大家介紹了超越Node.js的JavaScript運行環(huán)境Bun.js功能特性詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • 使用PreloadJS加載圖片資源的基礎(chǔ)方法詳解

    使用PreloadJS加載圖片資源的基礎(chǔ)方法詳解

    PreloadJS是一個用來管理和協(xié)調(diào)相關(guān)資源加載的類庫,它可以方便的幫助你預先加載相關(guān)資源簡單點兒說就是一個加載插件,它可以做成頁面異步加載且頂部會有進度條動畫
    2020-02-02
  • Javascript閉包使用場景原理詳細

    Javascript閉包使用場景原理詳細

    這篇文章主要介紹了Javascript閉包的使用場景,  由于在Javascript語言中,只有函數(shù)內(nèi)部的子函數(shù)才能讀取局部變量,閉包就是能夠讀取其他函數(shù)內(nèi)部變量的函數(shù)。所以,在本質(zhì)上,閉包就是將函數(shù)內(nèi)部和函數(shù)外部連接起來的一座橋梁,下面一起進入文化在哪個了解文章內(nèi)容
    2021-11-11
  • 微信小程序 wxapp內(nèi)容組件 icon詳細介紹

    微信小程序 wxapp內(nèi)容組件 icon詳細介紹

    這篇文章主要介紹了微信小程序 wxapp內(nèi)容組件 icon詳細介紹的相關(guān)資料,并附簡單實例,需要的朋友可以參考下
    2016-10-10
  • 詳解微信小程序如何實現(xiàn)類似ChatGPT的流式傳輸

    詳解微信小程序如何實現(xiàn)類似ChatGPT的流式傳輸

    這篇文章主要為大家介紹了微信小程序如何實現(xiàn)類似ChatGPT的流式傳輸示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • 常用的JavaScript數(shù)組方法

    常用的JavaScript數(shù)組方法

    一說到JavaScript的數(shù)組,大家基本都能馬上想起pop()、push()、shift()、unshift()、indexof()等等,今天小編就給大家分享幾個開發(fā)中常用的js數(shù)組方法即他們的用法。需要的朋友可以參考下面文章的具體內(nèi)容
    2021-09-09
  • 微信小程序搜索組件wxSearch實例詳解

    微信小程序搜索組件wxSearch實例詳解

    這篇文章主要介紹了微信小程序搜索組件wxSearch實例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • Web應用開發(fā)TypeScript使用詳解

    Web應用開發(fā)TypeScript使用詳解

    這篇文章主要為大家介紹了Web應用開發(fā)TypeScript的使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05

最新評論