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 相关文章推荐
基于Jquery的淡入淡出的特效基础练习
Dec 13 Javascript
js不完美解决click和dblclick事件冲突问题
Jul 16 Javascript
JavaScript实现GriwView单列全选(自写代码)
May 13 Javascript
javascript在网页中实现读取剪贴板粘贴截图功能
Jun 07 Javascript
使用jquery实现放大镜效果
Sep 02 Javascript
jQuery获取iframe的document对象的方法
Oct 10 Javascript
JavaScript中SetInterval与setTimeout的用法详解
Nov 10 Javascript
JavaScript基础篇(3)之Object、Function等引用类型
Nov 30 Javascript
Vue.js 中的 $watch使用方法
May 25 Javascript
Angular 4依赖注入学习教程之组件服务注入(二)
Jun 04 Javascript
JavaScript位置参数实现原理及过程解析
Sep 14 Javascript
JS实现扫雷项目总结
May 19 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应用技巧
2008/03/27 PHP
php 检查电子邮件函数(自写)
2014/01/16 PHP
php解析http获取的json字符串变量总是空白null
2015/03/02 PHP
Thinkphp无限级分类代码
2015/11/11 PHP
php写一个函数,实现扫描并打印出自定目录下(含子目录)所有jpg文件名
2017/05/26 PHP
类似GMAIL的Ajax信息反馈显示
2010/02/16 Javascript
分享一个自己写的table表格排序js插件(高效简洁)
2011/10/29 Javascript
JavaScript获取表单enctype属性的方法
2015/04/02 Javascript
javascript原型模式用法实例详解
2015/06/04 Javascript
jQuery带时间的日期控件代码分享
2015/08/26 Javascript
jQuery实现切换页面过渡动画效果
2015/10/29 Javascript
setTimeout学习小结
2017/02/08 Javascript
jQuery实现贪吃蛇小游戏(附源码下载)
2017/03/04 Javascript
在Angular中实现一个级联效果的下拉框的示例代码
2020/05/20 Javascript
[01:23]2019完美世界全国高校联赛(春季赛)合肥全国总决赛
2019/06/10 DOTA
Python SQLAlchemy基本操作和常用技巧(包含大量实例,非常好)
2014/05/06 Python
Python下singleton模式的实现方法
2014/07/16 Python
python静态方法实例
2015/01/14 Python
Python中使用MELIAE分析程序内存占用实例
2015/02/18 Python
python中redis的安装和使用
2016/12/04 Python
教你用一行Python代码实现并行任务(附代码)
2018/02/02 Python
Django外键(ForeignKey)操作以及related_name的作用详解
2019/07/29 Python
解决pycharm安装第三方库失败的问题
2020/05/09 Python
安装python依赖包psycopg2来调用postgresql的操作
2021/01/01 Python
如何用用Python将地址标记在地图上
2021/02/07 Python
Python实现简单的2048小游戏
2021/03/01 Python
css3 中实现炫酷的loading效果
2019/04/26 HTML / CSS
小天鹅官方商城:LittleSwan
2017/06/16 全球购物
红旗方阵解说词
2014/02/12 职场文书
勾股定理课后反思
2014/04/26 职场文书
保护环境建议书300字
2014/05/13 职场文书
大专生自荐书范文
2014/06/22 职场文书
婚前财产协议书范本
2014/10/19 职场文书
电影雷锋观后感
2015/06/10 职场文书
《实心球》教学反思
2016/02/23 职场文书
Python中的turtle画箭头,矩形,五角星
2022/03/16 Python