如何优雅的在Vue Project中使用vue-apollo
首先我们来熟悉下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相关推荐
- vue项目中app.vue 、main.js和 index.html的关联
1.main.js是我们的入口文件,主要作用是初始化vue实例并使用需要的插件. import Vue from 'vue' import App from './App'/* eslint-disa ...
- 如何使用Vue.js中的set设置对象属性值
1.问题背景 使用vue初始化一个对象v,并在data中初始化一个空对象obj,然后使用Vue.set()给对象obj添加属性 2.实现源码 <!DOCTYPE html> <htm ...
- VUE day_01(7.15) vue的入门---使用vue脚本可以实现的一些功能
导语 回顾前面的内容,是按照WEB的发展史在推进: HTML + CSS :适合做简单的静态页面 DOM + JS: 让页面动起来 jQuery: 通过封装原生DOM, 简化DOM的操作 自动化+工程 ...
- VUE项目中优雅使用EasyPlayer实时播放摄像头多种格式视频
EasyPlayer 介绍 简介:集播放http-flv, hls, websocket 于一身的H5视频直播/视频点播播放器, 使用简单, 功能强大: 功能支持: 支持 MP4 播放 支持 m3u8 ...
- mockjs vue ajax,mockjs在vue中的使用
mockjs在vue中的使用 mockjs在vue中的使用 前后端分工协作是一个非常高效的做法,但是有时前后端分离不彻底会很痛苦.前后端应该是异步进行的,进度互不影响,但是在没有mock的时候,前端却 ...
- vue 响应式ui_如何在Vue.js中设置响应式UI搜索
vue 响应式ui Are you thinking of building something awesome with one of the popular modern frameworks o ...
- 【转】Vue.js入门教程(二)在页面中引入vue的方式
第二章:安装和基础效果展示 页面中引入vue 因为我们的目标是在最短的时间之内学会vue的使用方法,所以我们不一定需要通过npm工程化进行安装,你直接用script在页面中引用也完全没有问题. 第一种 ...
- vue项目导入elementui_在vue项目中使用elementui
如何让你的前端程序看起来很优雅而又简单. 最近我做的项目几乎都是管理系统,所以为了节约时间,开始使用ui框架-----elementui. 一个简单的管理系统来说,这套ui框架足够使用了,而且对样式的 ...
- Leaflet笔记-把leaflet-tilelayer-wmts移植到vue cli中(含思路)
目录 前言 过程 前言 关于leaflet的webpackage使用npm安装官方是有明显的解析 但是关于插件特别是TileLayer.WMTS是不提供的,但提供了源码,可以稍微修改下,就能在vue ...
最新文章
- Jedis连接Redis单机版
- mongodb安装.
- 如何在SAP Spartacus自定义Component里消费数据
- 去掉xcode中警告的一些经验
- Java多线程4:synchronized锁机制
- 智领云荣登“中国大数据企业50强” | 2020大数据产业生态大会盛大召开 智领云斩获多项殊荣
- scrapy newspaper bug
- ps分辨率像素英寸和厘米的区别_PS萌新必知的专业术语
- PYTHON笔记 面向对象程序设计
- 剑指offer——面试题17:合并两个排序的链表
- 2016 ECCV论文 《Peak-Piloted Deep Network for Facial Expression Recognition》
- python怎么重复程序,如何重复运行python程序
- 一元二次方程极简新解法
- 微博推荐算法学习(Weibo Recommend Algolrithm)
- 移动端Web开发(一)移动端开发的基本概念
- 愚人节十大经典骗局,学学前辈的招数吧
- PnetLab模拟器安装锐捷镜像
- SpringReport--报表设计器的使用
- Java编程基础(3)——字典类型
- (gitee)gitee凭据配置