在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 相关文章推荐
csdn 博客中实现运行代码功能实现
Aug 29 Javascript
jquery实现商品拖动选择效果代码(自写)
May 28 Javascript
JavaScript前端图片加载管理器imagepool使用详解
Dec 29 Javascript
JavaScript如何自定义trim方法
Jul 28 Javascript
开源免费天气预报接口API及全国所有地区代码(国家气象局提供)
Dec 26 Javascript
基于jquery实现二级联动效果
Mar 30 jQuery
vue.js中mint-ui框架的使用方法
May 12 Javascript
对Vue.js之事件的绑定(v-on: 或者 @ )详解
Sep 15 Javascript
详解koa2学习中使用 async 、await、promise解决异步的问题
Nov 13 Javascript
js简单的分页器插件代码实例
Sep 11 Javascript
vue项目,代码提交至码云,iconfont的用法说明
Jul 30 Javascript
详解实现vue的数据响应式原理
Jan 20 Vue.js
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
基于qmail的完整WEBMAIL解决方案安装详解
2006/10/09 PHP
php基础知识:类与对象(5) static
2006/12/13 PHP
php use和include区别总结
2019/10/13 PHP
Laravel实现ApiToken认证请求
2019/10/14 PHP
Javascript 函数对象的多重身份
2009/06/28 Javascript
JS在IE和FireFox之间常用函数的区别小结
2010/03/12 Javascript
扩展javascript的Date方法实现代码(prototype)
2010/11/20 Javascript
通过JS来动态的修改url,实现对url的增删查改
2014/09/01 Javascript
javascript Deferred和递归次数限制实例
2014/10/21 Javascript
深入探寻seajs的模块化与加载方式
2015/04/14 Javascript
js+html5实现可在手机上玩的拼图游戏
2015/07/17 Javascript
完善的jquery处理机制
2016/02/21 Javascript
一款简单的jQuery图片标注效果附源码下载
2016/03/22 Javascript
JavaScript中split与join函数的进阶使用技巧
2016/05/03 Javascript
jQuery Mobile动态刷新页面样式的实现方法
2016/05/28 Javascript
简单实现js页面切换功能
2021/01/10 Javascript
js HTML5多媒体影音播放
2016/10/17 Javascript
JavaScript生成.xls文件的代码
2016/12/22 Javascript
jQuery实现弹出窗口弹出div层的实例代码
2017/01/09 Javascript
nodejs个人博客开发第三步 载入页面
2017/04/12 NodeJs
React Native自定义控件底部抽屉菜单的示例
2018/02/08 Javascript
vue+webpack模拟后台数据的示例代码
2018/07/26 Javascript
Vue 配合eiement动态路由,权限验证的方法
2018/09/26 Javascript
Python2.x利用commands模块执行Linux shell命令
2016/03/11 Python
Python的Twisted框架上手前所必须了解的异步编程思想
2016/05/25 Python
Python合并字典键值并去除重复元素的实例
2016/12/18 Python
python爬虫URL重试机制的实现方法(python2.7以及python3.5)
2018/12/18 Python
如何基于Python获取图片的物理尺寸
2019/11/25 Python
详解Python3 定义一个跨越多行的字符串的多种方法
2020/09/06 Python
python中uuid模块实例浅析
2020/12/29 Python
给导游的表扬信
2014/01/10 职场文书
事业单位考核材料
2014/05/21 职场文书
幼儿园植树节活动总结
2014/07/04 职场文书
小学大队委竞选口号
2015/12/25 职场文书
MySQL命令行操作时的编码问题详解
2021/04/14 MySQL
postgresql 删除重复数据案例详解
2021/08/02 PostgreSQL