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 相关文章推荐
符合标准的js表单提交的代码
Sep 13 Javascript
学习ExtJS TextField常用方法
Oct 07 Javascript
JavaScript面向对象编程入门教程
Apr 16 Javascript
js简单实现点击左右运动的方法
Apr 10 Javascript
jQuery获取同级元素的简单代码
Jul 09 Javascript
Angular2-primeNG文件上传模块FileUpload使用详解
Jan 14 Javascript
Vue自定义图片懒加载指令v-lazyload详解
Dec 31 Javascript
Easyui使用Dialog行内按钮布局的实例
Jul 27 Javascript
JS实现十分钟倒计时代码实例
Oct 18 Javascript
推荐几个不错的console调试技巧实现
Dec 20 Javascript
javascript设计模式之装饰者模式
Jan 30 Javascript
JS Array.from()将伪数组转换成数组的方法示例
Mar 23 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
php生成xml简单实例代码
2009/12/16 PHP
php生成不重复随机数、数组的4种方法分享
2015/03/30 PHP
jcrop基本参数一览
2013/07/16 Javascript
JS两种定义方式的区别、内部原理
2013/11/21 Javascript
jquery基础教程之deferred对象使用方法
2014/01/22 Javascript
node.js中的fs.lchownSync方法使用说明
2014/12/16 Javascript
JavaScript实现Java中StringBuffer的方法
2015/02/09 Javascript
javascript 应用小技巧方法汇总
2015/07/05 Javascript
实例讲解避免javascript冲突的方法
2016/01/03 Javascript
jQuery绑定自定义事件的魔法升级版
2016/06/30 Javascript
微信小程序开发探究
2016/12/27 Javascript
jQuery实现弹窗居中效果类似alert()
2017/02/27 Javascript
80%应聘者都不及格的JS面试题
2017/03/21 Javascript
js实现点击切换checkbox背景图片的简单实例
2017/05/08 Javascript
使用Dropzone.js上传的示例代码
2017/10/10 Javascript
Element-UI Table组件上添加列拖拽效果实现方法
2018/04/14 Javascript
echarts整合多个类似option的方法实例
2018/07/10 Javascript
vue中Element-ui 输入银行账号每四位加一个空格的实现代码
2018/09/14 Javascript
详解Vue依赖收集引发的问题
2019/04/22 Javascript
原生JavaScript实现滑动拖动验证的示例代码
2019/12/06 Javascript
vue实现div单选多选功能
2020/07/16 Javascript
50行代码实现贪吃蛇(具体思路及代码)
2013/04/27 Python
python3 cvs将数据读取为字典的方法
2018/12/22 Python
Django如何简单快速实现PUT、DELETE方法
2019/07/24 Python
深入了解如何基于Python读写Kafka
2019/12/31 Python
Python vtk读取并显示dicom文件示例
2020/01/13 Python
部署Django到阿里云服务器教程示例
2020/06/03 Python
详解numpy1.19.4与python3.9版本冲突解决
2020/12/15 Python
轻金属冶金专业毕业生自荐信
2013/11/02 职场文书
校友会欢迎辞
2014/01/13 职场文书
会计学生自我鉴定
2014/02/06 职场文书
物业公司的岗位任命书
2014/06/06 职场文书
公司活动总结范文
2014/07/01 职场文书
天气温馨提示语
2015/07/14 职场文书
如何计划开一家便利店?
2019/07/31 职场文书
Python中requests做接口测试的方法
2021/05/30 Python