国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

vue3.x中apollo的使用案例代碼

瀏覽:145日期:2022-06-02 09:59:08
目錄
  • 通過(guò)客戶端獲取Apollo配置
    • 環(huán)境
    • 工具的安裝
    • 獲取Apollo配置
      • 相關(guān)代碼
      • 錯(cuò)誤提示
  • 通過(guò)開(kāi)放接口獲取Apollo配置
    • 通過(guò)不帶緩存的Http接口從Apollo讀取配置
      • 參數(shù)說(shuō)明
      • 瀏覽器方式
      • 請(qǐng)求交互方式

目前為止,前端獲取動(dòng)態(tài)數(shù)據(jù),都是前端與服務(wù)端進(jìn)行交互獲取數(shù)據(jù),但是如果只是獲取簡(jiǎn)單的一些配置屬性,并沒(méi)有其它的接口需要服務(wù)端提供,此時(shí)在搭建一個(gè)服務(wù)器就是資源的浪費(fèi)了,希望可以直接從 apollo的配置服務(wù)器中獲取,無(wú)需額外的服務(wù)端接口

通過(guò)前端自身直接獲取到apollo的配置目前看到官方支持的客戶端是沒(méi)有vue的,所以以下是前端獲取到apollo數(shù)據(jù)的過(guò)程

通過(guò)客戶端獲取Apollo配置

環(huán)境

"vue": "^3.2.41",
"@vue/cli-service": "~5.0.8",

工具的安裝

"@vue/apollo-composable": "^4.0.0-beta.2",
"@vue/apollo-option": "^4.0.0-beta.2",
"graphql": "^16.6.0",
"graphql-tag": "^2.12.6",

獲取Apollo配置

相關(guān)代碼

main.ts 配置建立鏈接

const httpLink = createHttpLink({
    // You should use an absolute URL here
    uri: apiApollo,
    // credentials: "include"
})
// Cache implementation
const cache = new InMemoryCache()

// Create the apollo client
const apolloClient = new ApolloClient({
    link: httpLink,
    cache,
})
const apolloProvider = createApolloProvider({
    defaultClient: apolloClient,
})

const app = createApp(App, {
setup() {
    provide(DefaultApolloClient, apolloClient)
}
    });

獲取數(shù)據(jù)

import { useQuery } from "@vue/apollo-composable";
import gql from "graphql-tag";
export default defineComponent({
  name:"page-info",
  setup(){

    const { result, error, onResult, onError } = useQuery(gql`
    query getPartners {
      partners {
label,
value
      }
    }
    `)

    onResult(queryResult => {
      console.log("queryResultqueryResult", queryResult.data)
      console.log(queryResult.loading)
      console.log(queryResult.networkStatus)

    })

    onError(error => {
      console.log("queryResultqueryResult error", error.graphQLErrors)
      console.log(error.networkError)
    })
  }
})

錯(cuò)誤提示

Use the @apollo/client/core import path otherwise you will also import React.

一定注意引入的位置是import { ApolloClient, createHttpLink, InMemoryCache } from "@apollo/client/core";而不是@apollo/client,否則就會(huì)報(bào)引入react錯(cuò)誤

Uncaught (in promise) Error: Apollo client with id default not found. Use provideApolloClient() if you are outside of a component setup

該方式嘗試多種方式都是提示該錯(cuò)誤,并且vue3.x 該方式暫時(shí)還沒(méi)有比較完整的文檔說(shuō)明,所以該方式等以后更成熟之后在考慮

通過(guò)開(kāi)放接口獲取Apollo配置

根據(jù)目前的環(huán)境使用客戶端的方式獲取Apollo配置失敗,發(fā)現(xiàn)目前官方推薦的還有一種方式便是通過(guò)接口獲取

通過(guò)不帶緩存的Http接口從Apollo讀取配置

接口URL格式: {config_server_url}/configs/{appId}/{clusterName}/{namespaceName}?releaseKey={releaseKey}&ip={clientIp}

Method方式: GET

參數(shù)說(shuō)明

參數(shù)名是否必須參數(shù)值備注config_server_url是Apollo配置服務(wù)的地址,非UI界面的地址appId是應(yīng)用的appIdclusterName是集群名 一般情況下傳入 default 即可。如果希望配置按集群劃分,可以參考集群獨(dú)立配置說(shuō)明做相關(guān)配置,然后在這里填入對(duì)應(yīng)的集群名。namespaceName是Namespace的名字,如果沒(méi)有新建過(guò)Namespace的話,傳入application即可。如果創(chuàng)建了Namespace,并且需要使用該Namespace的配置,則傳入對(duì)應(yīng)的Namespace名字。需要注意的是對(duì)于properties類型的namespace,只需要傳入namespace的名字即可,如application。對(duì)于其它類型的namespace,需要傳入namespace的名字加上后綴名,如datasources.jsonreleaseKey否上一次的releaseKey將上一次返回對(duì)象中的releaseKey傳入即可,用來(lái)給服務(wù)端比較版本,如果版本比下來(lái)沒(méi)有變化,則服務(wù)端直接返回304以節(jié)省流量和運(yùn)算ip否應(yīng)用部署的機(jī)器ip這個(gè)參數(shù)是可選的,用來(lái)實(shí)現(xiàn)灰度發(fā)布。

config_server_url:不是配置的UI界面的DNS,是服務(wù)器的DNS,并且兩者沒(méi)有關(guān)聯(lián),所以如果直接拿界面的DNS獲取是獲取不到數(shù)據(jù)的

瀏覽器方式

https://apollo-config.uat.XXXX/configs/項(xiàng)目ID/項(xiàng)目空間/application

返回?cái)?shù)據(jù):

{
  "appId": "xxxx",
  "cluster": "default",
  "namespaceName": "application",
  "configurations": {//application 所有配置的值
    "title": "Apollo set value"
  },
  "releaseKey": "2023021"
}

請(qǐng)求交互方式

axios({
  method:"get",
  url:"/configs/{appId}/{clusterName}/{namespaceName}"
}).then((res:any)=>{
  console.log(res)
})

交互訪問(wèn)也會(huì)返回相同的數(shù)據(jù)

到此這篇關(guān)于vue3.x中apollo的使用的文章就介紹到這了,更多相關(guān)vue apollo使用內(nèi)容請(qǐng)搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!

標(biāo)簽: JavaScript
主站蜘蛛池模板: 亚洲精品久久久久午夜三 | 国产自精品在线 | 亚洲日韩精品欧美一区二区 | 欧美a级毛片 | 日本一区二区三区不卡视频中文字幕 | 黄色成人在线观看 | 久久久久久久久中文字幕 | 一区一精品 | 5388国产亚洲欧美在线观看 | 精品欧美一区二区三区在线观看 | 殴美一级视频 | 一级做a爰性色毛片免费 | 欧美一级成人毛片影院 | 欧美精品videos | 美女黄网站人色视频免费国产 | 一区二区三区网站在线免费线观看 | 一区二区三区高清视频在线观看 | 久久两性视频 | 99久久精品免费视频 | 91国偷自产一区二区三区 | 美女毛片大全 | 欧美笫一页 | 性做久久久久久 | 91久久精品视频 | 国产性自拍 | 国产成人91一区二区三区 | 国产一级一级毛片 | 久久在线视频播放 | 美女一丝不佳一级毛片香蕉 | 国产精品亚洲视频 | 又黄又爽视频好爽视频 | 欧美一级毛片特黄大 | 99久久精品免费看国产免费 | 日本精品视频在线播放 | 国产一级片免费 | 色碰碰| 国产精品久久久久久久久免费观看 | 成人免费视频日本 | 精品国产一区在线观看 | 午夜无遮挡怕怕怕免费视频 | 欧美成人免费观看国产 |