在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开发规范要求(规范化代码)
Aug 16 Javascript
JQuery异步加载无限下拉框级联功能实现示例
Feb 19 Javascript
jquery操作对象数组元素方法详解
Nov 26 Javascript
JavaScript入门基础
Aug 12 Javascript
js闭包用法实例详解
Dec 13 Javascript
jquery.masonry瀑布流效果
May 25 jQuery
JavaScript简介_动力节点Java学院整理
Jun 26 Javascript
jQuery第一次运行页面默认触发点击事件的实例
Jan 10 jQuery
Angular ElementRef简介及其使用
Oct 01 Javascript
vue改变对象或数组时的刷新机制的方法总结
Apr 24 Javascript
微信小程序如何使用globalData的方法
Jun 06 Javascript
使用Canvas绘制一个游戏人物属性图
Mar 25 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
php自定义的格式化时间示例代码
2013/12/05 PHP
PHP中is_file不能替代file_exists的理由
2014/03/04 PHP
PHP url的pathinfo模式加载不同控制器的简单实现
2016/08/12 PHP
ThinkPHP5实现作业管理系统中处理学生未交作业与已交作业信息的方法
2016/11/12 PHP
xml和web特殊字符
2009/04/28 Javascript
JavaScript 新手24条实用建议[TUTS+]
2009/06/21 Javascript
javascript函数中的arguments参数
2010/08/01 Javascript
jQuery让控件左右移动的三种实现方法
2013/09/08 Javascript
jquery中each方法示例和常用选择器
2014/07/08 Javascript
node.js调用C++开发的模块实例
2015/07/03 Javascript
深入浅析javascript立即执行函数
2015/10/23 Javascript
微信小程序开发之视频播放器 Video 弹幕 弹幕颜色自定义实例
2016/12/08 Javascript
详解利用jsx写vue组件的方法示例
2017/07/17 Javascript
chorme 浏览器记住密码后input黄色背景处理方法(两种)
2017/11/22 Javascript
JS实现运动缓冲效果的封装函数示例
2018/02/18 Javascript
javascript中floor使用方法总结
2019/02/02 Javascript
vue使用nprogress实现进度条
2019/12/09 Javascript
[14:36]2014 DOTA2国际邀请赛中国区预选赛5.21 Orenda VS NE
2014/05/22 DOTA
JS设计模式之责任链模式实例详解
2018/02/03 Python
python读取视频流提取视频帧的两种方法
2020/10/22 Python
python 保存float类型的小数的位数方法
2018/10/17 Python
Python subprocess库的使用详解
2018/10/26 Python
python做反被爬保护的方法
2019/07/01 Python
Python数据分析pandas模块用法实例详解
2019/11/20 Python
Tensorflow tf.tile()的用法实例分析
2020/05/22 Python
Python改变对象的字符串显示的方法
2020/08/01 Python
python 线程的五个状态
2020/09/22 Python
Python基于argparse与ConfigParser库进行入参解析与ini parser
2021/02/02 Python
纯CSS3实现圆圈动态发光特效动画的示例代码
2021/03/08 HTML / CSS
2014年党员公开承诺践诺书
2014/03/25 职场文书
公关活动策划方案
2014/05/25 职场文书
纪念九一八事变演讲稿1000字
2014/09/14 职场文书
2014年党支部书记工作总结
2014/12/04 职场文书
业务员岗位职责范本
2015/04/03 职场文书
四风之害观后感
2015/06/09 职场文书
JDK8中String的intern()方法实例详细解读
2022/09/23 Java/Android