在vue項目中集成graphql(vue-ApolloClient)

1.什麼是graphql前端

GraphQL 是一個用於 API 的查詢語言,是一個使用基於類型系統來執行查詢的服務端運行時vue

下圖展現graphql所處的位置node

2.優勢webpack

1.GraphQL API 有強類型 schemaweb

GraphQL schema是強類型的,可以使用SDL(GraphQL Schema Definition Language)來定義。好比,能夠使用構建工具驗證API請求,編譯時檢查API調用可能發生的錯誤vue-cli

2.按需獲取 npm

在不添加後端接口的前提下減小沒必要要的字段,作到前端自主訂閱字段後端

3.使用 vue集成graphqlapp

1.安裝vue腳手架 npm install -g vue-cli ide

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

相關文章
相關標籤/搜索