在vue项目中集成graphql(vue-ApolloClient)

本文介绍了如何在Vue项目中集成GraphQL,通过使用vue-ApolloClient实现前后端交互。首先,解释了GraphQL的基本概念和优势,如强类型schema和按需获取数据。接着,详细步骤包括安装vue脚手架和相关依赖,配置webpack加载器,以及在Vue组件中导入和使用graphql查询。最后,讨论了可能遇到的npm版本问题及其解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.什么是graphql

GraphQL 是一个用于 API 的查询语言,是一个使用基于类型系统来执行查询的服务端运行时

下图展示graphql所处的位置


2.优点

1.GraphQL API 有强类型 schema

GraphQL schema是强类型的,可使用SDL(GraphQL Schema Definition Language)来定义。比如,可以使用构建工具验证API请求,编译时检查API调用可能发生的错误

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'`
//前端全栈开发交流圈:866109386
`import { HttpLink } from` `'apollo-link-http'`
 //帮助1-3经验年前端开发人员,提升技术,思维
`import { InMemoryCache } from` `'apollo-cache-inmemory'`

`import VueApollo from` `'vue-apollo'`

`const httpLink =` `new` `HttpLink({`

`// You should use an absolute URL here`

`//config.js 代理设置`

`// '/graphql': {`

`// target: "[http://eshipe.net:3000/graphql](http://eshipe.net:3000/graphql)",`

`// changeOrigin: true,`

`// pathRewrite: {`

`// '^/graphql': '/graphql'`

`// }`

`// },`

`uri:` `'/graphql'``,``//访问地址,在这里使用代理`

`})`

`// 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(),``//注册全局组件`

`}).$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.可能遇到的问题

1.npm版本问题
解决思路:npm版本回退 npm install -g npm@4.6.1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值