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