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


Posted in Javascript onSeptember 08, 2018

1.什么是graphql

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

下图展示graphql所处的位置

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

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'
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 代理设置
// '/graphql': {
// target: "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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript中运用闭包和自执行函数解决大量的全局变量问题
Dec 30 Javascript
禁止空格提交表单的js代码
Nov 17 Javascript
Redis基本知识、安装、部署、配置笔记
Mar 05 Javascript
js读取并解析JSON类型数据的方法
Nov 14 Javascript
浅析$.getJSON异步请求和同步请求
Jun 06 Javascript
Javascript动画效果(2)
Oct 11 Javascript
vue-cli配置文件——config篇
Jan 04 Javascript
vue之浏览器存储方法封装实例
Mar 15 Javascript
JavaScript判断对象和数组的两种方法
May 31 Javascript
Vue实现剪贴板复制功能
Dec 31 Javascript
vue使用better-scroll实现滑动以及左右联动
Jun 30 Javascript
vue prop传值类型检验方式
Jul 30 Javascript
React Native开发封装Toast与加载Loading组件示例
Sep 08 #Javascript
原生JS实现前端本地文件上传
Sep 08 #Javascript
JS实现可视化文件上传
Sep 08 #Javascript
js实现文件上传功能 后台使用MultipartFile
Sep 08 #Javascript
vue-router的HTML5 History 模式设置
Sep 08 #Javascript
vue移动端下拉刷新和上拉加载的实现代码
Sep 08 #Javascript
react 父子组件之间通讯props
Sep 08 #Javascript
You might like
不用数据库的多用户文件自由上传投票系统(3)
2006/10/09 PHP
PHP 字符串分割和比较
2009/10/06 PHP
在IIS7.0下面配置PHP 5.3.2运行环境的方法
2010/04/13 PHP
fleaphp rolesNameField bug解决方法
2011/04/23 PHP
javascript,jquery闭包概念分析
2010/06/19 Javascript
JavaScript中的类继承
2010/11/25 Javascript
dtree 网页树状菜单及传递对象集合到js内,动态生成节点
2012/04/14 Javascript
js键盘上下左右键怎么触发function(实例讲解)
2013/12/14 Javascript
jquery动态添加删除一行数据示例
2014/06/12 Javascript
JavaScript设置获取和设置属性的方法
2015/03/04 Javascript
JavaScript显示表单内元素数量的方法
2015/04/02 Javascript
javascript入门教程基础篇
2015/11/16 Javascript
用vue构建多页面应用的示例代码
2017/09/20 Javascript
vue.js使用v-model指令实现的数据双向绑定功能示例
2018/05/22 Javascript
vue 引用自定义ttf、otf、在线字体的方法
2019/05/09 Javascript
vue实现固定位置显示功能
2019/05/30 Javascript
vue中使用 pako.js 解密 gzip加密字符串的方法
2019/06/10 Javascript
vue中axios封装使用的完整教程
2021/03/03 Vue.js
Python 检查数组元素是否存在类似PHP isset()方法
2014/10/14 Python
Python selenium 三种等待方式详解(必会)
2016/09/15 Python
不同版本中Python matplotlib.pyplot.draw()界面绘制异常问题的解决
2017/09/24 Python
Python实现扩展内置类型的方法分析
2017/10/16 Python
快速查询Python文档方法分享
2017/12/27 Python
python遍历文件夹找出文件夹后缀为py的文件方法
2018/10/21 Python
PyQt5内嵌浏览器注入JavaScript脚本实现自动化操作的代码实例
2019/02/13 Python
python微信聊天机器人改进版(定时或触发抓取天气预报、励志语录等,向好友推送)
2019/04/25 Python
pandas的to_datetime时间转换使用及学习心得
2019/08/11 Python
Python 实现3种回归模型(Linear Regression,Lasso,Ridge)的示例
2020/10/15 Python
关于探究python中sys.argv时遇到的问题详解
2021/02/23 Python
美国时尚女装在线:Missguided
2016/12/03 全球购物
波兰灯具、照明和LED购物网站:Lampy.pl
2019/03/11 全球购物
迪卡侬比利时官网:Decathlon比利时
2019/12/28 全球购物
关于环保的活动方案
2014/08/25 职场文书
七年级上册语文教学计划
2015/01/22 职场文书
2015-2016年小学教导工作总结
2015/07/21 职场文书
大学生志愿者心得体会
2016/01/15 职场文书