1、首先我们需要安装一下vue-apollo 具体执行命令如下:
代码如下:npm install –save vue-apollo graphql apollo-client apollo-link apollo-link-http apollo-cache-inmemory graphql-tag
2、在我们的项目的根目录下创建一个vueApollo.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({ uri: './v1/assess/api', /* 其中./v1是我在vue的config中配置时解决跨域时起的代理一个名字,后面的是后端 暴露接口方法的地址 */ credentials: 'same-origin', /* 这个属性的意思是在同源的情况下携带cookie,因为vue-apollo本身发送的是一个fetch请求,所以在发送请求时不会自动携带cookie,所以我们需要加上此属性 */});const apolloClient = new ApolloClient({ link: httpLink, cache: new InMemoryCache(), connectToDevTools: true,});export default new VueApollo({ defaultClient: apolloClient, clients: { default: apolloClient },});
3,接着我们将配置好的js文件引入到man.js中,具体如下:
import Vue from 'vue';import ElementUI from 'element-ui';import VueApollo from 'vue-apollo';import apolloProvider from './apollo';// Install the vue plugin// Vue.component('full-calendar', fullCalendar);Vue.config.productionTip = false;Vue.use(ElementUI);Vue.use(VueApollo);/* eslint-disable no-new */new Vue({ el: '#app', provide: apolloProvider.provide(), //这句代码是我们要和vuex一样,将apolloProvider添加为根组件 router, store, template: '<App/>', components: { App },});
准备好这些,我们就可以开始使用了,另外如果有谷歌账号,可以在谷歌的应用商店去下载“Apollo Client Developer Tools”插件,来模拟vue-apollo调用接口,当然你也可以直接看后端的代码,然后看接口的定义
4,然后在项目的根目录下创建一个graphql文件夹,这个文件里面去封装每一个模块所对应的方法,为了代码的简洁,可以每一个模块建立一个js文件,实现接口方法的统一管理,比如说我创建了一个交atemplate.graphql文件,注意这个文件夹下所有的文件后缀名都是.graphql。
首先我们说一下query方式的调用:具体代码如下:
query getAssessTemplateListings($query: String, $state: Int, $page: Int, $pageSize: Int) { assessTemplateListings(query: $query, state: $state, page: $page, pageSize: $pageSize) { assessTemplates { id groupId name description state createdAt updatedAt } page pageSize total }}
5,然后将该方法引入到所需要调用的vue文件中引入方式如下:
代码如下:import { getAssessTemplateListings, stopAssessTemplate } from '@/services/graphql/assessTemplate.graphql';
新闻热点
疑难解答
图片精选