美团出品的 mpvue 是基于 vue 的多端小程序开源框架,可以用来开发微信(wx)、支付宝(my)、百度(swan)、头条(tt)的小程序。今天主要说的是在微信小程序端封装 axios 函数。
对于数据请求,微信官方有相关的数据请求模块,只是如果我们在大量使用的时候会产生冗余代码,为了使用方便,减少代码量,我们推荐自己封装请求函数。
很多人说mpvue不支持axios插件,(主要是某些教育机构的讲师,如果不知道请不要妄下结论,容易误导新手),只能使用fly.js进行请求。其实mpvue是可以用 axios 来请求数据的,只是需要多做些操作,下面我们一起来封装 axios 函数吧!
步骤1. 模块安装
使用 npm 命令进行安装
qs 是用来对数据进行格式化的,可以根据自己的需要选择装或者不装
npm install axios -save
npm install qs -save
2. 引用
在 main.js 引入,并设置为 Vue 的原型属性
import axios from 'axios'
import qs from 'qs'
Vue.prototype.$axios = axios;
Vue.prototype.$qs = qs;
3. 新建 request.js 文件封装函数
import axios from 'axios'
import qs from 'qs'
//设置根路径,可以在后期需要发送请求时使用 简写url
const baseUrl = 'http://***';//这里为服务器地址,或者叫接口地址
axios.defaults.baseURL = baseUrl;
//解决微信小程序直接使用 axios 会报错的问题
axios.defaults.adapter = function (config) {
return new Promise((resolve, reject) => {
let data = config.method === 'get' ? config.params : qs.stringify(config.data)
// wx小程序 发起相应请求
wx.request({
url: baseUrl + config.url,
method:config.method,
data:data,
success:(res)=>{ return resolve(res)},
fail:(err)=>{return reject(err)}
})
})
}
//封装 axios 请求函数
function call(url,params={},method='GET'){
return axios({
method,
url,
params
})
}
export default {
call: call
}
注意:文件写完了不要忘记在 main.js 文件中引入,否则不就白写了????
import req from "@/utils/request";
Vue.prototype.$req = req;//设置原型,方便在全局中随时使用
4. 使用
接下来就到了激动人心的时候了,我们就可以在页面中轻而易举的请求数据了。
使用方法如下:
this.$req
.call('****')//这里为数据路径
.then(res => {
//这个 data 就为我们想要的接口数据啦
console.log(res.data);
})
结束语
函数封装的过程是我在实际项目中截取的部分重要代码,按照步骤走应该是可以成功获取数据的。如果在学习过程中遇到任何问题,欢迎关注随时讨论。有些文章会教大家使用拦截,那个也是因人而异,主要以理解为主,切不能生搬硬套那样对知识的储备没有帮助。