在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 web对话框与弹出窗口
Feb 22 Javascript
JavaScript高级程序设计 阅读笔记(十七) js事件
Aug 14 Javascript
得到jQuery detach()后节点中的某个值实现代码
Feb 05 Javascript
JavaScript中的onerror事件概述及使用
Apr 01 Javascript
js实现的点击div区域外隐藏div区域
Jun 30 Javascript
JavaScript中数据结构与算法(一):栈
Jun 19 Javascript
BootStrap的alert提示框的关闭后再显示怎么解决
May 17 Javascript
更靠谱的H5横竖屏检测方法(js代码)
Sep 13 Javascript
JavaScript实现省市县三级级联特效
May 16 Javascript
完美解决iview 的select下拉框选项错位的问题
Mar 02 Javascript
详解如何运行vue项目
Apr 15 Javascript
JS实现页面鼠标点击出现图片特效
Aug 19 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
漫荒推荐:画风超赞的国风漫画推荐 超长假期不无聊
2020/03/08 国漫
一个用于mysql的数据库抽象层函数库
2006/10/09 PHP
DedeCMS 核心类TypeLink.class.php摘要笔记
2010/04/07 PHP
PHP 开发环境配置(Zend Studio)
2010/04/28 PHP
php插件Xajax使用方法详解
2017/08/31 PHP
Laravel5.7 Eloquent ORM快速入门详解
2019/04/12 PHP
js 全兼容可高亮二级缓冲折叠菜单
2010/06/04 Javascript
JavaScript编程开发中的五个实用小技巧
2010/07/22 Javascript
基于Jquery的淡入淡出的特效基础练习
2010/12/13 Javascript
为JavaScript类型增加方法的实现代码(增加功能)
2011/12/29 Javascript
IE6下javasc#ipt:void(0) 无效的解决方法
2013/12/23 Javascript
jQuery实现Tab菜单滚动切换的方法
2015/09/21 Javascript
jQuery获取radio选中项的值实例
2016/06/18 Javascript
解决AngualrJS页面刷新导致异常显示问题
2017/04/20 Javascript
深入浅析Nodejs的Http模块
2017/06/20 NodeJs
jquery easyui如何实现格式化列
2017/07/30 jQuery
layer弹出层 iframe层去掉滚动条的实例代码
2018/08/17 Javascript
脚手架vue-cli工程webpack的基本用法详解
2018/09/29 Javascript
Vue项目中使用flow做类型检测的方法
2020/03/18 Javascript
使用IPython来操作Docker容器的入门指引
2015/04/08 Python
在Windows系统上搭建Nginx+Python+MySQL环境的教程
2015/12/25 Python
利用Python-iGraph如何绘制贴吧/微博的好友关系图详解
2017/11/02 Python
python3爬取各类天气信息
2018/02/24 Python
TensorFlow 模型载入方法汇总(小结)
2018/06/19 Python
TensorFlow实现简单的CNN的方法
2019/07/18 Python
Python发送邮件的实例代码讲解
2019/10/16 Python
django自定义非主键自增字段类型详解(auto increment field)
2020/03/30 Python
python性能测试工具locust的使用
2020/12/28 Python
英文自荐信
2013/12/15 职场文书
讲解员培训方案
2014/05/04 职场文书
个性车贴标语
2014/06/24 职场文书
Python多线程 Queue 模块常见用法
2021/07/04 Python
python scrapy简单模拟登录的代码分析
2021/07/21 Python
Vue中Object.assign清空数据报错的解决方案
2022/03/03 Vue.js
css3手动实现pc端横向滚动
2022/06/21 HTML / CSS
Windows7下FTP搭建图文教程
2022/08/05 Servers