爬坑: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

相关文章
相关标签/搜索