首先我们来熟悉下graphql的工作机制

一个GraphQL查询可以包含一个或者多个操作(operation),类似于一个RESTful API。操作(operation)可以使两种类型:查询(Query)或者修改(mutation)。我们看一个例子:

`query {client(id: 1) {id name}
}`    

那么问题来了,我们已经用熟了axios或者fetch 再或者ajax来进行数据的交互,如:

getRecommdBook (type) {this.axios.get(`/books/web/recommendation-api/recommendation/official?type=${type}`).then(res => {if (res.data) {this.recommdBookfun(res.data)console.log(this.recommdBook)}}).catch(err => {console.log(err)})},

怎样以我们熟悉的形式来运用apollo,使查询更加简便呢

首先我们先在vue项目中引用apollo-vue(apollo非亲生儿子) 作者是Guillaume Chau(vue的开发团队人员)

git:https://github.com/Akryum/vue...

npm install --save vue-apollo apollo-client

main.js引用

// apollo配置import { ApolloClient, createNetworkInterface } from 'apollo-client'import VueApollo from 'vue-apollo'

构建客户端
可以构建多个适应不同接口

    const networkInterfaceTask = createNetworkInterface({uri: '/api/tasks/graphql',transportBatching: true,opts: {credentials: 'include'}})const apolloClientTask = new ApolloClient({networkInterface: networkInterfaceTask,connectToDevTools: true})const apolloProvider = new VueApollo({clients: {task: apolloClientTask},defaultClient: apolloClientTask})

使用apollo

Vue.use(VueApollo)

根目录引用

new Vue({el: '#app',router,axios,store,apolloProvider,template: '<App/>',components: { App }
})

好到此为止,基础配置就已经ok了
接下来就是实际的请求了
在vue 的组件中,比如 test.vue

我们的例子是带参数的查询
首先在组件里构建查询的变量

import gql from 'graphql-tag'const getErSeasons = gql`query erSeasons($classId: Long!) {erSeasons{idnamestartTimeendTimeclassTask(class:$classId){idclassIdstartTimeendTimestatus}}}`

不懂的话先去查下教程api
然后在methods里面

 changeClass (id) {this.ClassSeasons = []this.Select = idconsole.log(this.$apollo.query)this.$apollo.query({query: getErSeasons,variables: {classId: this.Select}}).then(res => {this.Parse(res.data.erSeasons)console.log(res)}).catch(err => {console.log(err)})}这个形式是不是有点熟悉了。哈哈哈
可以了。以后就又可以愉快的装逼了
本文章只适于初学者作者:考拉阅读前端工程师

如何优雅的在Vue Project中使用vue-apollo相关推荐

  1. vue项目中app.vue 、main.js和 index.html的关联

    1.main.js是我们的入口文件,主要作用是初始化vue实例并使用需要的插件. import Vue from 'vue' import App from './App'/* eslint-disa ...

  2. 如何使用Vue.js中的set设置对象属性值

    1.问题背景 使用vue初始化一个对象v,并在data中初始化一个空对象obj,然后使用Vue.set()给对象obj添加属性 2.实现源码 <!DOCTYPE html> <htm ...

  3. VUE day_01(7.15) vue的入门---使用vue脚本可以实现的一些功能

    导语 回顾前面的内容,是按照WEB的发展史在推进: HTML + CSS :适合做简单的静态页面 DOM + JS: 让页面动起来 jQuery: 通过封装原生DOM, 简化DOM的操作 自动化+工程 ...

  4. VUE项目中优雅使用EasyPlayer实时播放摄像头多种格式视频

    EasyPlayer 介绍 简介:集播放http-flv, hls, websocket 于一身的H5视频直播/视频点播播放器, 使用简单, 功能强大: 功能支持: 支持 MP4 播放 支持 m3u8 ...

  5. mockjs vue ajax,mockjs在vue中的使用

    mockjs在vue中的使用 mockjs在vue中的使用 前后端分工协作是一个非常高效的做法,但是有时前后端分离不彻底会很痛苦.前后端应该是异步进行的,进度互不影响,但是在没有mock的时候,前端却 ...

  6. vue 响应式ui_如何在Vue.js中设置响应式UI搜索

    vue 响应式ui Are you thinking of building something awesome with one of the popular modern frameworks o ...

  7. 【转】Vue.js入门教程(二)在页面中引入vue的方式

    第二章:安装和基础效果展示 页面中引入vue 因为我们的目标是在最短的时间之内学会vue的使用方法,所以我们不一定需要通过npm工程化进行安装,你直接用script在页面中引用也完全没有问题. 第一种 ...

  8. vue项目导入elementui_在vue项目中使用elementui

    如何让你的前端程序看起来很优雅而又简单. 最近我做的项目几乎都是管理系统,所以为了节约时间,开始使用ui框架-----elementui. 一个简单的管理系统来说,这套ui框架足够使用了,而且对样式的 ...

  9. Leaflet笔记-把leaflet-tilelayer-wmts移植到vue cli中(含思路)

    目录 前言 过程 前言 关于leaflet的webpackage使用npm安装官方是有明显的解析 但是关于插件特别是TileLayer.WMTS是不提供的,但提供了源码,可以稍微修改下,就能在vue ...

最新文章

  1. Jedis连接Redis单机版
  2. mongodb安装.
  3. 如何在SAP Spartacus自定义Component里消费数据
  4. 去掉xcode中警告的一些经验
  5. Java多线程4:synchronized锁机制
  6. 智领云荣登“中国大数据企业50强” | 2020大数据产业生态大会盛大召开 智领云斩获多项殊荣
  7. scrapy newspaper bug
  8. ps分辨率像素英寸和厘米的区别_PS萌新必知的专业术语
  9. PYTHON笔记 面向对象程序设计
  10. 剑指offer——面试题17:合并两个排序的链表
  11. 2016 ECCV论文 《Peak-Piloted Deep Network for Facial Expression Recognition》
  12. python怎么重复程序,如何重复运行python程序
  13. 一元二次方程极简新解法
  14. 微博推荐算法学习(Weibo Recommend Algolrithm)
  15. 移动端Web开发(一)移动端开发的基本概念
  16. 愚人节十大经典骗局,学学前辈的招数吧
  17. PnetLab模拟器安装锐捷镜像
  18. SpringReport--报表设计器的使用
  19. Java编程基础(3)——字典类型
  20. (gitee)gitee凭据配置

热门文章

  1. js面向对象编程:命名空间
  2. 用Apache James搭建本地邮件服务器
  3. ALinq 让Mysql变得如此简单
  4. 谷歌Linux基金会等联合推出开源软件签名服务 sigstore,提振软件供应链安全
  5. vs2012 MSDN帮助文档离线包下载安装方法
  6. shiro使用WebService进行验证的实现
  7. C++程序员Protocol Buffers基础指南
  8. 【C++】C++类和对象
  9. python(源码包安装 基本使用 循环)
  10. 在Win7旗舰版安装并运行LoadRunner11