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 相关文章推荐
node.js中的console.trace方法使用说明
Dec 09 Javascript
javascript实现控制div颜色
Jul 07 Javascript
Angular.js与Bootstrap相结合实现表格分页代码
Apr 12 Javascript
JS采用绝对定位实现回到顶部效果完整实例
Jun 20 Javascript
扩展Bootstrap Tooltip插件使其可交互的方法
Nov 07 Javascript
深入理解vue Render函数
Jul 19 Javascript
Javascript实现跨域后台设置拦截的方法详解
Aug 04 Javascript
js实现rem自动匹配计算font-size的示例
Nov 18 Javascript
Vue框架之goods组件开发详解
Jan 25 Javascript
vue webpack开发访问后台接口全局配置的方法
Sep 18 Javascript
layui实现数据分页功能
Jul 27 Javascript
vue中div禁止点击事件的实现
Apr 02 Vue.js
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
echo, print, printf 和 sprintf 区别
2006/12/06 PHP
收藏的PHP常用函数 推荐收藏保存
2010/02/21 PHP
PHP在字符断点处截断文字的实现代码
2011/04/21 PHP
php cookie名使用点号(句号)会被转换
2014/10/23 PHP
PHP微信公众号开发之微信红包实现方法分析
2017/07/14 PHP
Yii2 队列 shmilyzxt/yii2-queue 简单概述
2017/08/02 PHP
PHP实现创建一个RPC服务操作示例
2020/02/23 PHP
PHP 实现重载
2021/03/09 PHP
Mootools 1.2教程 Fx.Tween的使用
2009/09/15 Javascript
JavaScript 弹出窗体点击按钮返回选择数据的实现
2010/04/01 Javascript
jQuery建立一个按字母顺序排列的友好页面索引(兼容IE6/7/8)
2013/02/26 Javascript
javascript事件模型实例分析
2015/01/30 Javascript
jQuery实现获取绑定自定义事件元素的方法
2015/12/02 Javascript
js输出数据精确到小数点后n位代码
2016/07/02 Javascript
简单实现Vue的observer和watcher
2016/12/21 Javascript
jquery实现简单实用的轮播器
2017/05/23 jQuery
vue mintui-Loadmore结合实现下拉刷新和上拉加载示例
2017/10/12 Javascript
jQuery zTree搜索-关键字查询 递归无限层功能实现代码
2018/01/25 jQuery
如何获取TypeScript的声明文件.d.ts
2018/05/01 Javascript
JS中的算法与数据结构之常见排序(Sort)算法详解
2019/08/16 Javascript
[06:36]吞吞映像top1
2014/06/20 DOTA
Python学习入门之区块链详解
2017/07/25 Python
Python编写一个优美的下载器
2018/04/15 Python
Python中创建二维数组
2018/10/17 Python
Python爬虫使用代理IP的实现
2019/10/27 Python
Python环境配置实现pip加速过程解析
2020/11/27 Python
数控专业大学生的自我鉴定
2013/11/13 职场文书
校本教研工作方案
2014/01/14 职场文书
店长职务说明书
2014/02/04 职场文书
护士岗前培训自我评鉴
2014/02/28 职场文书
给老婆的保证书范文
2014/04/28 职场文书
查摆问题自我剖析材料
2014/08/18 职场文书
学校做一个有道德的人活动方案
2014/08/23 职场文书
详细了解java监听器和过滤器
2021/07/09 Java/Android
为了顺利买到演唱会的票用Python制作了自动抢票的脚本
2021/10/16 Python
python实现双向链表原理
2022/05/25 Python