爬坑:vue2.3+webpack引入axios

關於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

相關文章
相關標籤/搜索