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
来源:oschina
链接:https://my.oschina.net/u/3970421/blog/2874173