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 相关文章推荐
Packer 3.0 JS压缩及混淆工具 下载
May 03 Javascript
javascript中的window.location.search方法简介
Sep 02 Javascript
js闭包的用途详解
Nov 09 Javascript
第二次聊一聊JS require.js模块化工具的基础知识
Apr 17 Javascript
简单谈谈axios中的get,post方法
Jun 25 Javascript
react-native DatePicker日期选择组件的实现代码
Sep 12 Javascript
Vue封装的可编辑表格插件方法
Aug 28 Javascript
layer.confirm点击第一个按钮关闭弹出框的方法
Sep 09 Javascript
Echarts实现单条折线可拖拽效果
Dec 19 Javascript
js与jquery获取input输入框中的值实例讲解
Feb 27 jQuery
javascript开发实现贪吃蛇游戏
Jul 31 Javascript
uniapp微信小程序实现一个页面多个倒计时
Nov 01 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
wiki-shan写的php在线加密的解密程序
2008/09/07 PHP
ThinkPHP中关联查询实例
2014/12/02 PHP
PHP封装的MSSql操作类完整实例
2016/05/26 PHP
PHP获取文件扩展名的常用方法小结【五种方式】
2018/04/27 PHP
PDO::errorInfo讲解
2019/01/28 PHP
js 字符串操作函数
2009/07/25 Javascript
jQuery 方法大全方便学习参考
2010/02/25 Javascript
jQuery插件slides实现无缝轮播图特效
2015/04/17 Javascript
Angularjs过滤器使用详解
2016/05/25 Javascript
JavaScript学习小结之使用canvas画“哆啦A梦”时钟
2016/07/24 Javascript
JQuery学习总结【一】
2016/12/01 Javascript
两种简单的跨域方法(jsonp、php)
2017/01/02 Javascript
VUE中使用Vue-resource完成交互
2017/07/21 Javascript
自制简易打赏功能的实例
2017/09/02 Javascript
vue-cli项目中怎么使用mock数据
2017/09/27 Javascript
一个Vue视频媒体多段裁剪组件的实现示例
2018/08/09 Javascript
js实现GIF图片的分解和合成
2019/10/24 Javascript
微信小程序实现选择地址省市区三级联动
2020/06/21 Javascript
Python读取ini文件、操作mysql、发送邮件实例
2015/01/01 Python
简单说明Python中的装饰器的用法
2015/04/24 Python
简述Python中的进程、线程、协程
2016/03/18 Python
pytorch中tensor的合并与截取方法
2018/07/26 Python
修改python plot折线图的坐标轴刻度方法
2018/12/13 Python
10 分钟快速入门 Python3的教程
2019/01/29 Python
python3.6环境安装+pip环境配置教程图文详解
2019/06/20 Python
使用Python生成200个激活码的实现方法
2019/11/22 Python
Python 抓取数据存储到Redis中的操作
2020/07/16 Python
python动态规划算法实例详解
2020/11/22 Python
全球速卖通法国在线交易平台:AliExpress法国
2017/07/07 全球购物
应届生新闻编辑求职信
2013/11/19 职场文书
店长助理岗位职责
2013/12/13 职场文书
开朗女孩的自我评价
2014/02/10 职场文书
聚美优品的广告词
2014/03/14 职场文书
试用期转正员工自我评价
2014/09/18 职场文书
国庆节慰问信
2015/02/15 职场文书
python使用pygame创建精灵Sprite
2021/04/06 Python