在vue項(xiàng)目中集成graphql(vue-ApolloClient)
1.什么是graphql
GraphQL 是一個(gè)用于 API 的查詢語(yǔ)言,是一個(gè)使用基于類型系統(tǒng)來(lái)執(zhí)行查詢的服務(wù)端運(yùn)行時(shí)
下圖展示graphql所處的位置

2.優(yōu)點(diǎn)
1.GraphQL API 有強(qiáng)類型 schema
GraphQL schema是強(qiáng)類型的,可使用SDL(GraphQL Schema Definition Language)來(lái)定義。比如,可以使用構(gòu)建工具驗(yàn)證API請(qǐng)求,編譯時(shí)檢查API調(diào)用可能發(fā)生的錯(cuò)誤
2.按需獲取
在不添加后端接口的前提下減少不必要的字段,做到前端自主訂閱字段
3.使用 vue集成graphql
1.安裝vue腳手架 npm install -g vue-cli
2.安裝vue-apollo客戶端 vue-apollo graphql apollo-client apollo-link apollo-link-http apollo-cache-inmemory graphql-tag
3.webpack.base.conf.js 安裝加載器加載graphql后綴文件
{
test: /\.(graphql|gql)$/,
exclude: /node_modules/,
loader: 'graphql-tag/loader'
},
4.main.js 添加
import { ApolloClient } from 'apollo-client'
import { HttpLink } from 'apollo-link-http'
import { InMemoryCache } from 'apollo-cache-inmemory'
import VueApollo from 'vue-apollo'
const httpLink = new HttpLink({
// You should use an absolute URL here
//config.js 代理設(shè)置
// '/graphql': {
// target: "http://eshipe.net:3000/graphql",
// changeOrigin: true,
// pathRewrite: {
// '^/graphql': '/graphql'
// }
// },
uri: '/graphql',//訪問(wèn)地址,在這里使用代理
})
// Create the apollo client
const apolloClient = new ApolloClient({
link: httpLink,
cache: new InMemoryCache(),
connectToDevTools: true,
})
// Install the vue plugin
Vue.use(VueApollo)
const apolloProvider = new VueApollo({
defaultClient: apolloClient,
})
new Vue({
router,
store,
provide: apolloProvider.provide(),//注冊(cè)全局組件
}).$mount('#app')
5.添加search.graphql文件
//定義查詢
query q_user($id: Int){
User(id: $id){
id
address
name
}
}
6.具體的vue組件中
1.import gql from "graphql-tag";
2.import {q_user} from'search.graphql'
3. 具體方法中使用
this.$apollo.query({
query: q_user,
variables: {
id: 1,
},
}).then(res => {
console.log(res)
}).catch(err => {
console.log(err)
})
4.可能遇到的問(wèn)題
1.npm版本問(wèn)題
解決思路:npm版本回退 npm install -g npm@4.6.1
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
vue子路由跳轉(zhuǎn)實(shí)現(xiàn)tab選項(xiàng)卡效果
這篇文章主要為大家詳細(xì)介紹了vue子路由跳轉(zhuǎn)實(shí)現(xiàn)tab選項(xiàng)卡效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03
vue項(xiàng)目或網(wǎng)頁(yè)上實(shí)現(xiàn)文字轉(zhuǎn)換成語(yǔ)音播放功能
這篇文章主要介紹了在vue項(xiàng)目或網(wǎng)頁(yè)上實(shí)現(xiàn)文字轉(zhuǎn)換成語(yǔ)音,需要的朋友可以參考下2020-06-06
vue3 reactive定義的引用類型直接賦值導(dǎo)致數(shù)據(jù)失去響應(yīng)式問(wèn)題
這篇文章主要介紹了vue3 reactive定義的引用類型直接賦值導(dǎo)致數(shù)據(jù)失去響應(yīng)式問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06
vue+antDesign實(shí)現(xiàn)樹(shù)形數(shù)據(jù)展示及勾選聯(lián)動(dòng)
本文主要介紹了vue+antDesign實(shí)現(xiàn)樹(shù)形數(shù)據(jù)展示及勾選聯(lián)動(dòng),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02
Vue Render函數(shù)創(chuàng)建DOM節(jié)點(diǎn)代碼實(shí)例
這篇文章主要介紹了Vue Render函數(shù)創(chuàng)建DOM節(jié)點(diǎn)代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07
將VUE項(xiàng)目部署到服務(wù)器的詳細(xì)步驟
經(jīng)過(guò)一段時(shí)間的探索,前端后端都有大致的樣子了,下面就是部署到服務(wù)器,這篇文章主要給大家介紹了關(guān)于將VUE項(xiàng)目部署到服務(wù)器的詳細(xì)步驟,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08

