详解在vue-cli中使用graphql即vue-apollo的用法

yizhihongxing

下面我将详细讲解vue-cli中使用graphql及vue-apollo的用法。具体步骤如下:

环境准备

在使用vue-cli和vue-apollo之前,需要先安装Node.js和npm。这里推荐使用最新版本的Node.js和npm。

安装vue-cli

Vue-cli是Vue.js官方提供的工具,用于快速搭建Vue.js项目。通过vue-cli可以帮助我们快速创建Vue.js项目的基础架构。

  1. 打开终端,运行以下命令来安装vue-cli:
npm install -g vue-cli
  1. 安装完成后,可以通过以下命令来检查是否安装成功:
vue -V

如果能够输出版本号,则说明安装成功。

创建新项目

  1. 使用vue-cli来创建一个新的Vue.js项目:
vue create my-project
  1. 在创建项目的过程中,会让你选择一些选项,包括需要安装哪些插件,选择eslint的配置等。

  2. 安装成功后,可以进入项目根目录,使用以下命令来启动项目:

npm run serve

安装vue-apollo

  1. 在终端中,进入项目根目录,并运行以下命令:
npm install vue-apollo apollo-boost graphql --save
  1. 等待安装完成后,在项目中,新建一个src/apollo.js文件,并添加以下内容:
import Vue from 'vue'
import VueApollo from 'vue-apollo'
import ApolloClient from 'apollo-boost'

Vue.use(VueApollo)

const apolloClient = new ApolloClient({
  // 替换自己的graphql接口地址
  uri: 'http://localhost:3000/graphql',
  request: async operation => {
    operation.setContext({
      headers: {
        // 替换自己的Token
        authorization: `Bearer <TOKEN>`
      }
    })
  }
})

const apolloProvider = new VueApollo({
  defaultClient: apolloClient
})

export default apolloProvider

其中,uri需要替换成你的graphql接口地址。authorization需要替换成你的Token。

使用apolloProvider提供的数据

通过上述步骤完成后,就可以在Vue.js项目中使用Apollo Client来请求GraphQL数据。

  1. 在Vue.js组件中使用Apollo Client:
<template>
  <div>
    <div v-for="(user, index) in users" :key="index">
      {{ user.id }} - {{ user.name }}
    </div>
  </div>
</template>

<script>
import gql from 'graphql-tag'
import { mapGetters } from 'vuex'

export default {
  name: 'MyComponent',

  data() {
    return {
      users: []
    }
  },

  apollo: {
    users: gql`
      query {
        users {
          id
          name
        }
      }
    `
  }
}
</script>
  1. 在Vuex store中使用Apollo Client:
import gql from 'graphql-tag'

const state = {
  users: []
}

const actions = {
  async getUsers({ commit }) {
    const response = await this._vm.$apollo.query({
      query: gql`
        query {
          users {
            id
            name
          }
        }
      `
    })
    commit('SET_USERS', response.data.users)
  }
}

const mutations = {
  SET_USERS(state, users) {
    state.users = users
  }
}

export default {
  namespaced: true,
  state,
  actions,
  mutations
}

示例说明

示例一

在Vue.js组件中使用Apollo Client请求数据。

  1. 在Vue.js项目中创建一个src/components/MyComponent.vue文件,并添加以下内容:
<template>
  <div>
    <div v-for="(user, index) in users" :key="index">
      {{ user.id }} - {{ user.name }}
    </div>
  </div>
</template>

<script>
import gql from 'graphql-tag'

export default {
  name: 'MyComponent',

  data() {
    return {
      users: []
    }
  },

  apollo: {
    users: gql`
      query {
        users {
          id
          name
        }
      }
    `
  }
}
</script>
  1. src/main.js中,添加以下内容:
import Vue from 'vue'
import App from './App.vue'
import apolloProvider from './apollo'

Vue.config.productionTip = false

new Vue({
  apolloProvider,
  render: h => h(App)
}).$mount('#app')
  1. 启动项目,在浏览器中,可以看到已经成功获取到GraphQL返回的数据了。

示例二

在Vuex store中使用Apollo Client。

  1. 在Vue.js项目中创建一个src/store/user.js文件,并添加以下内容:
import gql from 'graphql-tag'

const state = {
  users: []
}

const actions = {
  async getUsers({ commit }) {
    const response = await this._vm.$apollo.query({
      query: gql`
        query {
          users {
            id
            name
          }
        }
      `
    })
    commit('SET_USERS', response.data.users)
  }
}

const mutations = {
  SET_USERS(state, users) {
    state.users = users
  }
}

export default {
  namespaced: true,
  state,
  actions,
  mutations
}
  1. src/store/index.js中,导入user.js并添加到Vuex store中:
import Vue from 'vue'
import Vuex from 'vuex'
import user from './user'

Vue.use(Vuex)

export default new Vuex.Store({
  modules: {
    user
  }
})
  1. 在Vue.js组件中,使用Vuex来获取数据:
<template>
  <div>
    <div v-for="(user, index) in users" :key="index">
      {{ user.id }} - {{ user.name }}
    </div>
  </div>
</template>

<script>
import { mapGetters } from 'vuex'

export default {
  name: 'MyComponent',

  computed: {
    ...mapGetters('user', ['users'])
  },

  created() {
    this.$store.dispatch('user/getUsers')
  }
}
</script>
  1. 启动项目,在浏览器中,可以看到已经成功获取到GraphQL返回的数据了。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解在vue-cli中使用graphql即vue-apollo的用法 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • Vue批量图片显示时遇到的路径被解析问题

    在Vue中批量显示图片时,由于图片路径的解析会存在一些问题。在这里,我会为大家讲解一些常见的解决方法和技巧。我的攻略包括以下内容: 使用require来加载图片 使用public文件夹存放图片 1. 使用require来加载图片 对于小型项目来说,我们可以使用require来加载图片。这种方法非常简单,只需要在组件文件中使用require即可,如下所示: &…

    Vue 2023年5月27日
    00
  • vue forEach循环数组拿到自己想要的数据方法

    我来为您详细讲解vue forEach循环数组拿到自己想要的数据方法的完整攻略。 内容概述 什么是forEach循环 forEach方法与for循环的区别 遍历普通数组获取数据 遍历对象数组获取数据 示例说明 什么是forEach循环 forEach是一个数组方法,它会遍历数组中的每一个元素,并对其执行指定的回调函数。它可以替代常用的for循环,在遍历数组的…

    Vue 2023年5月29日
    00
  • vue 项目代码拆分的方案

    以下是“Vue项目代码拆分的方案”的完整攻略: 1. 为什么需要代码拆分 在一个大型的Vue项目中,随着业务的增长,代码量也不断增加。如果所有的代码都写在单个文件中,会降低代码的可维护性、阅读性和重用性,代码文件会变得非常庞大和复杂,难以维护。 而代码拆分可以将代码按照逻辑、功能等方面进行拆分,将不同的功能模块分割到不同的文件、组件中,可以让代码更为模块化、…

    Vue 2023年5月27日
    00
  • vue中{{}},v-text和v-html区别与应用详解

    让我给你详细讲解一下”Vue中{{ }},v-text和v-html区别与应用详解”。 什么是Vue.js Vue.js是一个轻量级的JavaScript框架,它专注于构建用户界面,同时也可以用于构建单页面应用程序。它的核心是响应式编程,通过对“数据驱动视图”的理念来实现用户界面的构建。Vue.js支持一些基本的指令以实现与用户界面的交互,如:{{}},v-…

    Vue 2023年5月28日
    00
  • 改变vue请求过来的数据中的某一项值的方法(详解)

    下面我将详细讲解改变 Vue 组件请求过来的数据中的某一项值的方法。 确定需要修改的数据 首先我们需要确定需要修改的数据,可以通过在 Vue 组件的 mounted 或 created 钩子中打印请求到的数据,查看需要修改的数据具体位置。比如下面这个例子: export default { data() { return { user: null } }, …

    Vue 2023年5月29日
    00
  • Vue 项目的成功发布和部署的实现

    Vue 项目的成功发布和部署,可以分为以下几个步骤: 1. 准备工作 在开始部署之前,需要确保你的项目已经完成开发,并成功运行在本地环境中。同时需要确保已经安装必要的环境和工具,例如:Node.js、Git、npm 或 yarn。 2. 打包 Vue 项目 使用 npm run build 或 yarn build 命令来打包 Vue 项目并生成可部署的静态…

    Vue 2023年5月28日
    00
  • vue项目中引入js-base64方式

    当我们在Vue项目中需要进行Base64编解码操作时,可以引入js-base64库来完成。下面将提供完整的引入方式以及两个示例说明: 1. 引入js-base64库 首先,我们需要安装js-base64库。在项目根目录下执行以下命令: npm install js-base64 –save 接着,在需要使用Base64的Vue组件或者JS文件中引入该库: …

    Vue 2023年5月28日
    00
  • 详解使用VueJS开发项目中的兼容问题

    详解使用VueJS开发项目中的兼容问题 当我们使用VueJS开发项目时,兼容问题是我们需要关注的一个重要因素。在不同的浏览器、不同的设备上,VueJS可能表现出不同的行为,甚至会出现兼容性问题。本文将从以下几个方面来讲解VueJS的兼容问题。 1. 兼容性测试 在开发VueJS项目时,我们应该在不同的浏览器和设备上测试项目的兼容性。可以使用一些自动化测试工具…

    Vue 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部