美文网首页web前端开发让前端飞
在vue项目中集成graphql(vue-ApolloClien

在vue项目中集成graphql(vue-ApolloClien

作者: 88b61f4ab233 | 来源:发表于2018-11-09 15:57 被阅读1次

    1.什么是graphql

    GraphQL 是一个用于 API 的查询语言,是一个使用基于类型系统来执行查询的服务端运行时

    下图展示graphql所处的位置


    2.优点

    1.GraphQL API 有强类型 schema

    GraphQL schema是强类型的,可使用SDL(GraphQL Schema Definition Language)来定义。比如,可以使用构建工具验证API请求,编译时检查API调用可能发生的错误

    2.按需获取

    在不添加后端接口的前提下减少不必要的字段,做到前端自主订阅字段

    3.使用 vue集成graphql

    1.安装vue脚手架 npm install -g vue-cli

    2.安装vue-apollo客户端 vue-apollo graphql apollo-client apollo-link apollo-link-http apollo-cache-inmemory graphql-tag

    3.webpack.base.conf.js 安装加载器加载graphql后缀文件

    {
    test: /\.(graphql|gql)$/,
    exclude: /node_modules/,
    loader: 'graphql-tag/loader'
    },
    

    4.main.js 添加

    `import { ApolloClient } from` `'apollo-client'`
    //前端全栈开发交流圈:866109386
    `import { HttpLink } from` `'apollo-link-http'`
     //帮助1-3经验年前端开发人员,提升技术,思维
    `import { InMemoryCache } from` `'apollo-cache-inmemory'`
    
    `import VueApollo from` `'vue-apollo'`
    
    `const httpLink =` `new` `HttpLink({`
    
    `// You should use an absolute URL here`
    
    `//config.js 代理设置`
    
    `// '/graphql': {`
    
    `// target: "[http://eshipe.net:3000/graphql](http://eshipe.net:3000/graphql)",`
    
    `// changeOrigin: true,`
    
    `// pathRewrite: {`
    
    `// '^/graphql': '/graphql'`
    
    `// }`
    
    `// },`
    
    `uri:` `'/graphql'``,``//访问地址,在这里使用代理`
    
    `})`
    
    `// Create the apollo client`
    
    `const apolloClient =` `new` `ApolloClient({`
    
    `link: httpLink,`
    
    `cache:` `new` `InMemoryCache(),`
    
    `connectToDevTools:` `true``,`
    
    `})`
    
    `// Install the vue plugin`
    
    `Vue.use(VueApollo)`
    
    `const apolloProvider =` `new` `VueApollo({`
    
    `defaultClient: apolloClient,`
    
    `})`
    
    `new` `Vue({`
    
    `router,`
    
    `store,`
    
    `provide: apolloProvider.provide(),``//注册全局组件`
    
    `}).$mount(``'#app'``)`
    
    

    5.添加search.graphql文件

    //定义查询
    query q_user($id: Int){
    User(id: $id){
    id
    address
    name
    }
    }
    

    6.具体的vue组件中

    1.import gql from "graphql-tag";

    2.import {q_user} from'search.graphql'

    3. 具体方法中使用

    this.$apollo.query({
    query: q_user,
    variables: {
    id: 1,
    },
    }).then(res => {
    console.log(res)
    }).catch(err => {
    console.log(err)
    })
    

    4.可能遇到的问题

    1.npm版本问题
    解决思路:npm版本回退 npm install -g npm@4.6.1

    相关文章

      网友评论

        本文标题:在vue项目中集成graphql(vue-ApolloClien

        本文链接:https://www.haomeiwen.com/subject/lkloxqtx.html