vue中使用GraphQL的实例代码


Posted in Javascript onNovember 04, 2019

上篇给大家介绍了Java 使用 Graphql 搭建查询服务详解。这里我们讲讲如何在Vue中使用GraphQL。

1. 初始化vue项目

npm install -g @vue/cli
vue create vue-apollo-demo

选择默认cli的默认模板就可以了

添加 /src/graphql/article.js 、 /src/utils/graphql.js 两个文件。

├── node_modules
└── public
│ ├── favicon.ico
│ └── index.html
├── src
│ ├── assets
│ │ └── home.js
│ ├── components
│ │ └── HelloWorld.js
│ ├── graphql
│ │ ├── article.js
│ ├── utils
│ │ ├── graphql.js
│ ├── App.vue
│ └── main.js
├── package.json
└── package-lock.json

2. 安装Apollo客户端

vue-apollo 可以帮助你在应用中使用GraphQL的一套工具。

你可以使用Apollo Boost或 直接使用 Apollo Client(需要更多配置工作)。

name这里用 Apollo Boost 就可以了,如果你想要更细粒度的控制,可以去看 Vue Apollo 的文档。

Apollo Boost 是一种零配置开始使用 Apollo Client 的方式。它包含一些实用的默认值,例如我们推荐的 InMemoryCache 和 HttpLink ,它非常适合用于快速启动开发。

将它与 vue-apollo 和 graphql 一起安装:

npm install --save vue-apollo graphql apollo-boost

3. 创建ApolloClient实例

在你的应用中创建一个 ApolloClient 实例:

/src/utils/graphql.js
import ApolloClient from 'apollo-boost';
const apolloClient = new ApolloClient({
 // 你需要在这里使用绝对路径
 uri: 'http://127.0.0.1:7001/graphql'
})
export default apolloClient;

4. 添加GraphQL的操作实例

/src/utils/article.js

import gql from 'graphql-tag'
import apolloClient from '../utils/graphql'

export function getArticleList(params) {
 return apolloClient.query({
  query: gql`query ($first: ID) {
   articleList(first: $first){
    id
    title
    content
    author {
     name
     age
    }
   }
  }`,
  variables: params
 })
}

export function createArticle(params) {
 return apolloClient.mutate({
  mutation: gql`mutation ($title: String, $content: String, $author: AddAuthor) {
   addArticle(title: $title, content: $content, author: $author){
    id
    title
    content
    author {
     age
     name
    }
   }
  }`,
  variables: params
 })
}

5. 调试

/src/App.vue

<template>
 <div id="app">
 <div class="list">
  <h1>文章列表</h1>
  <ul>
  <li v-for="(v, k) of list" :key="k">
   文章名称: {{ v.title }}----------------({{ v.author.name }})
  </li>
  </ul>
 </div>
 <div class="form">
  <h1>添加文章</h1>
  标题:<input v-model="formData.title" type="text"><br>
  作者名称: <input v-model="formData.author.name" type="text"><br>
  作者年龄: <input v-model.number="formData.author.age" type="text"><br>
  文章内容: <textarea v-model="formData.content" name="" id="" cols="30" rows="10"></textarea>
  <button @click="createArticle">添加</button>
 </div>
 </div>
</template>

<script>
import { getArticleList, createArticle } from './graphql/article'
export default {
 name: 'app',
 data() {
 return {
  list: [],
  formData: {
  title: '',
  content: '',
  author: {
   name: '',
   age: ''
  }
  }
 }
 },
 mounted() {
 this.initData()
 },
 methods: {
 initData() {
  getArticleList({first: 0})
  .then(res=>{
   console.log('request success')
   console.log(res.data.articleList.length)
   this.list = res.data.articleList
  })
  .catch(err=>{
   console.log(err)
  })
 },
 createArticle() {
  createArticle(this.formData)
  .then(()=>{
   this.initData()
  })
  .catch(err=>{
   console.log(err)
  })
 }
 }
}
</script>

效果如下:

vue中使用GraphQL的实例代码 

总结

以上所述是小编给大家介绍的vue中使用GraphQL的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
javascript中call和apply方法浅谈
Sep 27 Javascript
浅析jquery ajax异步调用方法中不能给全局变量赋值的原因及解决方法
Jan 10 Javascript
使用jquery实现IE下按backspace相当于返回操作
Mar 18 Javascript
Js 正则表达式知识汇总
Dec 02 Javascript
jQuery学习笔记之创建DOM元素
Jan 19 Javascript
bootstrap table 服务器端分页例子分享
Feb 10 Javascript
JavaScript+html5 canvas实现本地截图教程
Apr 16 Javascript
Javascript必知必会(四)js类型转换
Jun 08 Javascript
关于Javascript中defer和async的区别总结
Sep 20 Javascript
vue webpack打包后图片路径错误的完美解决方法
Dec 07 Javascript
使用JavaScript获取Django模板指定键值数据
May 27 Javascript
JS数组方法some、every和find的使用详情
Oct 05 Javascript
Vue项目中Api的组织和返回数据处理的操作
Nov 04 #Javascript
JS+CSS实现随机点名(实例代码)
Nov 04 #Javascript
Vue.js页面中有多个input搜索框如何实现防抖操作
Nov 04 #Javascript
详解利用eventemitter2实现Vue组件通信
Nov 04 #Javascript
jQuery实现form表单基于ajax无刷新提交方法实例代码
Nov 04 #jQuery
JS立即执行的匿名函数用法分析
Nov 04 #Javascript
小程序如何自主实现拦截器的示例代码
Nov 04 #Javascript
You might like
PHP5 的对象赋值机制介绍
2011/08/02 PHP
用PHP来计算某个目录大小的方法
2014/04/01 PHP
php json_encode()函数返回json数据实例代码
2014/10/10 PHP
javascript 多种搜索引擎集成的页面实现代码
2010/01/02 Javascript
JS继承 笔记
2011/07/13 Javascript
javascript中CheckBox全选终极方案
2015/05/20 Javascript
JS实现无限级网页折叠菜单(类似树形菜单)效果代码
2015/09/17 Javascript
jQuery如何获取动态添加的元素
2016/06/24 Javascript
jQuery EasyUI tree 使用拖拽时遇到的错误小结
2016/10/10 Javascript
原生Javascript插件开发实践
2017/01/09 Javascript
微信小程序 picker 组件详解及简单实例
2017/01/10 Javascript
详解Node项目部署到云服务器上
2017/07/12 Javascript
VUE2.0 ElementUI2.0表格el-table自适应高度的实现方法
2018/11/28 Javascript
JavaScript实现点击切换验证码及校验
2021/01/10 Javascript
[53:23]Secret vs Liquid 2018国际邀请赛淘汰赛BO3 第二场 8.25
2018/08/29 DOTA
[01:10:03]OG vs EG 2018国际邀请赛淘汰赛BO3 第三场 8.23
2018/08/24 DOTA
[01:02:55]CHAOS vs Mineski 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
Python实现破解12306图片验证码的方法分析
2017/12/29 Python
基于随机梯度下降的矩阵分解推荐算法(python)
2018/08/31 Python
python设置环境变量的原因和方法
2019/06/24 Python
python 五子棋如何获得鼠标点击坐标
2019/11/04 Python
利用pyshp包给shapefile文件添加字段的实例
2019/12/06 Python
美国本地交易和折扣网站:LocalFlavor.com
2017/10/26 全球购物
罗马尼亚在线杂货店:Pilulka.ro
2019/09/28 全球购物
软件测试题目
2013/02/27 面试题
企业管理专业个人求职信范文
2013/09/24 职场文书
顶岗实习计划书
2014/01/10 职场文书
高中政治教学反思
2014/01/18 职场文书
服务员态度差检讨书
2014/10/28 职场文书
物业客服专员岗位职责
2015/04/07 职场文书
成功的商业计划书这样写才最靠谱
2019/07/12 职场文书
pytorch 如何使用float64训练
2021/05/24 Python
Python数据可视化之基于pyecharts实现的地理图表的绘制
2021/06/10 Python
SQL模糊查询报:ORA-00909:参数个数无效问题的解决
2021/06/21 Oracle
教你如何用Python实现人脸识别(含源代码)
2021/06/23 Python
JavaScript实现简单的音乐播放器
2022/08/14 Javascript