關於axios的具體用法,網上有很詳細的解釋,我就不在這裏贅述了。在此推薦一篇文章,我以爲他寫的不錯。
本文,主要是分享下本身作項目時遇到的一點坑。
項目中用vue-cli搭建了腳手架,而後安裝了axios插件,安裝方法:vue
npm install axios -s
項目中封裝了不少的公用的函數,統一放置在common.js中,項目目錄以下:ios
在main.js裏引入common.js,並將其添加到Vue的原型鏈。vue-cli
import * as common from './static/common' Vue.prototype.common = common.default;
這時,我想在main.js中引入axios,npm
import axios from 'axios'
並在common.js中封裝成通用的函數,結果遇到了問題,運行時始終提示axios爲undefined。我猜測這可能與import的機制有關,由於也是最近才瞭解import這個用法,因此具體緣由沒法解釋。此處@各路高人,但願不吝賜教。
後來我採用的變通方法是在common.js中引入axios,這樣上述的問題就解決了。
接下來,遇到了另外一個問題,關於promise,一樣也是由於最近才嘗試用promise,所以這個很簡單的地方仍是花了我不少的功夫去琢磨。
爲了方便服用,將axios封裝爲一個自定義的函數,放置在common.js中。在此須要注意的是,axios函數執行後返回一個Promise對象,所以在封裝函數的最後要將這個axios的運行結果返回,即return axios({}).axios
execServerCall = (url, type, params, body) => { return axios({ url:url, method:type, params:params, data:body, headers: { } }); }
能夠進一步封裝代碼,將請求分別封裝成get,post兩個方法,方便調用。promise