在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 相关文章推荐
用js统计用户下载网页所需时间的脚本
Oct 15 Javascript
js修改table中Td的值(定义td的双击事件)
Jan 10 Javascript
如何从jQuery的ajax请求中删除X-Requested-With
Dec 11 Javascript
node.js中的path.join方法使用说明
Dec 08 Javascript
兼容各大浏览器的JavaScript阻止事件冒泡代码
Jul 09 Javascript
JavaScript简单遍历DOM对象所有属性的实现方法
Oct 21 Javascript
浏览器检测JS代码(兼容目前各大主流浏览器)
Feb 21 Javascript
javascript中FOREACH数组方法使用示例
Mar 01 Javascript
JS+html5 canvas实现的简单绘制折线图效果示例
Mar 13 Javascript
微信小程序 es6-promise.js封装请求与处理异步进程
Jun 12 Javascript
微信小程序实现图片上传功能实例(前端+PHP后端)
Jan 10 Javascript
vue基础之事件v-onclick="函数"用法示例
Mar 11 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
Yii多表联合查询操作详解
2016/06/02 PHP
PHP版单点登陆实现方案的实例
2016/11/17 PHP
PHP实现的数据对象映射模式详解
2019/03/20 PHP
javascript英文日期(有时间)选择器
2007/05/02 Javascript
用js来定义浏览器中一个左右浮动元素相对于页面主体宽度的位置的函数
2012/01/21 Javascript
引用 js在IE与FF之间的区别详细解析
2013/11/20 Javascript
jQuery $.extend()用法总结
2014/06/15 Javascript
Bootstrap每天必学之表单
2015/11/23 Javascript
JavaScript鼠标特效大全
2016/09/13 Javascript
BootStrap Table 设置height表头与内容无法对齐的问题
2016/12/28 Javascript
Js自动截取字符串长度,添加省略号(……)的实现方法
2017/03/06 Javascript
jQuery实现分页功能(含ajax请求、后台数据、附完整demo)
2017/04/03 jQuery
js模拟支付宝密码输入框
2017/04/11 Javascript
JavaScript数据结构之二叉查找树的定义与表示方法
2017/04/12 Javascript
基于JS脚本语言的基础语法详解
2017/07/22 Javascript
node koa2实现上传图片并且同步上传到七牛云存储
2017/07/31 Javascript
vue中使用iview自定义验证关键词输入框问题及解决方法
2018/03/26 Javascript
javascript中关于类型判断的一些疑惑小结
2018/10/14 Javascript
Vue render函数实战之实现tabs选项卡组件
2019/04/22 Javascript
el-table树形表格表单验证(列表生成序号)
2020/05/31 Javascript
js+html+css实现手动轮播和自动轮播
2020/12/30 Javascript
[01:02:30]Mineski vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第三场 8.22
2019/09/05 DOTA
python实现的简单猜数字游戏
2015/04/04 Python
Python3 中把txt数据文件读入到矩阵中的方法
2018/04/27 Python
Python3按一定数据位数格式处理bin文件的方法
2019/01/24 Python
keras实现调用自己训练的模型,并去掉全连接层
2020/06/09 Python
python爬虫scrapy基本使用超详细教程
2021/02/20 Python
KARATOV珠宝在线商店:俄罗斯珠宝品牌
2019/03/13 全球购物
Linux管理员面试经常问道的相关命令
2014/12/12 面试题
应聘护士自荐信
2013/10/21 职场文书
毕业生求职的求职信
2013/12/05 职场文书
面试后感谢信
2014/02/01 职场文书
2014年幼儿园元旦活动方案
2014/02/13 职场文书
《中华少年》教学反思
2014/02/15 职场文书
政府法律服务方案
2014/06/14 职场文书
HTML5来实现本地文件读取和写入的实现方法
2021/05/25 HTML / CSS