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 插件学习(六)
Aug 06 Javascript
关于JS中的闭包浅谈
Aug 23 Javascript
一个JavaScript用逗号分割字符串实例
Sep 22 Javascript
node.js+express制作网页计算器
Jan 17 Javascript
详解JavaScript中数组和字符串的lastIndexOf()方法使用
Mar 13 Javascript
jQuery插件版本冲突的处理方法分析
Jan 16 Javascript
利用types增强vscode中js代码提示功能详解
Jul 07 Javascript
Vue2.0+ElementUI实现表格翻页的实例
Oct 23 Javascript
js中let和var定义变量的区别
Feb 08 Javascript
使用Node.js写一个代码生成器的方法步骤
May 10 Javascript
vue v-for直接循环数字实例
Nov 07 Javascript
使用Typescript开发微信小程序的步骤详解
Jan 12 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
星际争霸教主Flash的ID由来:你永远不会知道他之前的ID是www!
2019/01/18 星际争霸
php XPath对XML文件查找及修改实现代码
2011/07/27 PHP
基于PHP的简单采集数据入库程序
2014/07/30 PHP
php实现判断访问来路是否为搜索引擎机器人的方法
2015/04/15 PHP
PHP读取CSV大文件导入数据库的实例
2017/07/24 PHP
PHP实现类似于C语言的文件读取及解析功能
2017/09/01 PHP
彻底搞懂PHP 变量结构体
2017/10/11 PHP
js获取当前月的第一天和最后一天的小例子
2013/11/18 Javascript
无闪烁更新网页内容JS实现
2013/12/19 Javascript
JavaScript二维数组实现的省市联动菜单
2014/05/08 Javascript
JS实现随机乱撞彩色圆球特效的方法
2015/05/05 Javascript
JavaScript生成SQL查询表单的方法
2015/08/13 Javascript
JS实现自定义简单网页软键盘效果代码
2015/11/05 Javascript
jQuery插件之jQuery.Form.js用法实例分析(附demo示例源码)
2016/01/04 Javascript
AngularJS教程 ng-style 指令简单示例
2016/08/03 Javascript
Vue-cli Eslint在vscode里代码自动格式化的方法
2018/02/23 Javascript
vue组件开发之用户无限添加自定义填写表单的方法
2018/08/28 Javascript
extract-text-webpack-plugin用法详解
2019/02/14 Javascript
关于layui 弹出层一闪而过就消失的解决方法
2019/09/09 Javascript
vue路由 遍历生成复数router-link的例子
2019/10/30 Javascript
微信小程序之滑动页面隐藏和显示组件功能的实现代码
2020/06/19 Javascript
《Python之禅》中对于Python编程过程中的一些建议
2015/04/03 Python
Python 常用string函数详解
2016/05/30 Python
Python3之简单搭建自带服务器的实例讲解
2018/06/04 Python
python 移除字符串尾部的数字方法
2018/07/17 Python
python实现旋转和水平翻转的方法
2018/10/25 Python
Python 使用 PyMysql、DBUtils 创建连接池提升性能
2019/08/14 Python
财务部岗位职责
2013/11/19 职场文书
遗嘱公证书标准样本
2014/04/08 职场文书
企业年度评优方案
2014/06/02 职场文书
小学语文教研活动总结
2014/07/01 职场文书
乡镇党建工作汇报材料
2014/08/14 职场文书
怒海潜将观后感
2015/06/11 职场文书
入党转正申请书范文
2019/05/20 职场文书
导游词之湖北武当山
2019/09/23 职场文书
MySQL创建高性能索引的全步骤
2021/05/02 MySQL