对uni.request的一些共同参数进行简单的封装,减少重复性数据请求代码。方便全局调用。
先在目录下创建 utils 和 common 这2个文件夹,utils 是存放工具类的,common 用来放置常用方法的
之后在utils 中创建 requset.js 用来放置 uni.request 的请求方法,在对其进行简单的封装。
import operate from '../common/operate.js'
// vuex 的使用 详情参考官网 https://uniapp.dcloud.io/vue-vuex
import store from '../store/index.js'
export default class Request {
http(param) {
// 请求参数
var url = param.url,
method = param.method,
header = {},
data = param.data || {},
token = param.token || "",
hideLoading = param.hideLoading || false;
//拼接完整请求地址
var requestUrl = operate.api + url;
//拼接完整请求地址(根据环境切换)
// var requestUrl = operate.api() + url;
//请求方式:GET或POST(POST需配置
// header: {'content-type' : "application/x-www-form-urlencoded"},)
if (method) {
method = method.toUpperCase(); //小写改为大写
if (method == "POST") {
header = {
'content-type': "application/x-www-form-urlencoded"
};
} else {
header = {
'content-type': "application/json"
};
}
}
//加载圈
if (!hideLoading) {
uni.showLoading({
title: '加载中...'
});
}
// 返回promise
return new Promise((resolve, reject) => {
// 请求
uni.request({
url: requestUrl,
data: data,
method: method,
header: header,
success: (res) => {
// 判断 请求api 格式是否正确
if (res.statusCode && res.statusCode != 200) {
uni.showToast({
title: "api错误" + res.errMsg,
icon: 'none'
});
return;
}
// 将结果抛出
resolve(res.data)
},
//请求失败
fail: (e) => {
uni.showToast({
title: "" + e.data.msg,
icon: 'none'
});
resolve(e.data);
},
//请求完成
complete() {
//隐藏加载
if (!hideLoading) {
uni.hideLoading();
}
resolve();
return;
}
})
})
}
}
在common 中分别创建 operate.js 和 api.js
export default {
//接口
api: "http://192.168.208.126:8080",
}
export default {
//接口
api: function() {
let version = wx.getAccountInfoSync().miniProgram.envVersion;
switch (version) {
case "develop": //开发预览版
return "https://www.baidu.com/"
break;
case 'trial': //体验版
return "https://www.baidu.com/"
break;
case 'release': //正式版
return "https://www.baidu.com/"
break;
default: //未知,默认调用正式版
return "http://www.baidu.com/"
break;
}
}
在跟目录创建api文件夹:在创建api.js
api.js 是用来调用我们封装好的 uni.request ,并且统一管理请求接口,在后续开发中只需要在页面中调用 api.js中请求即可
import Request from '@/utils/requset.js'
let request = new Request().http
//全局定义请求头
export default {
// 请求样式
classifyLeft: function(data) {
return request({
url: "/category/list", //请求头
method: "GET", //请求方式
data: data, //请求数据
})
},
}
/*
请求样式:
自定义名字: function(data) {
return request({
url: "/banner", //请求头
method: "GET", //请求方式
data: data, //请求数据
token: token, // 可传
hideLoading: false, //加载样式
})
},
*/
api.js的调用可以在main.js 中进行全局调用,也可以在需要的页面中调用,可根据实际情况来决定是否全局 调用。下面只介绍全局调用
1. 在main.js 中引入api.js
import api from '@/common/api.js'
Vue.prototype.$api = api
2. 在页面中调用
//不传参数
this.$api.sendRequest().then((res) => {
console.log(res);
})
//传参
this.$api.sendRequest({参数}).then((res) => {
console.log(res);
})
项目地址:gitee.com/jielov/uni-…
user.js 是用来调用我们封装好的 uni.request ,并且统一管理请求接口,在后续开发中只需要在页面中调用 user.js中请求即可
import Request from '@/utils/requset.js'
import operate from '@/common/operate.js'
let request = new Request().http
// 按需引入的 请求头
export const getUserInfo= function(data) {
return request({
url: "order/user ",
method: "POST",
data: data,
token: operate.isToken()
})
}
//引入
import {
getUserInfo
} from '@/api/user.js'
//放入生命周期
init() {
//用户信息
getUserInfo().then((res) => {
console.log(res);
})
},
作者:虚乄
链接:https://juejin.cn/post/7023983465892675614
uni.getUserInfo 接口调用方式起初通过button 来获取用户信息,或者 直接调用 uni.getUserInfo 来获取信息 在当前微信更新接口后,这2个接口将直接返回匿名用户数据,不在弹窗提示
发现了点击按钮1可以更新title内容,但是点击按钮2却无法更新title内容。这个究竟是为什么呢?在changeTitle2方法的success方法中,该success方法指向闭包,所以this属于闭包
首先介绍最原始的跳转方法,类似于html中的 a 标签,不过在uniapp中需要将 a 标签换成 <navigator url=跳转的地址>……</navigator>
static 目录下的 js 文件不会被编译,如果里面有 es6 的代码,不经过转换直接运行,在手机设备上会报错。css、less/scss 等资源同样不要放在 static 目录下
发送验证码时,不能让客户一直发送验证码,所以需要设置一个60s后才能发送一次;具体代码实现:因为app和其他app不太一样,所以需要选择以这样的方式展示是时间,但是js逻辑代码是一样的;
computed里面的属性不能在data属性中出现,用来监控computed中自定义的变量 ,computed合适多个变量或对象处理后返回一个结果值,其中一个值发生变化则computed监控的属性值就会发生变化
开发了一年的uni-app,在这里总结一些uni-app开发中的问题,提供几个解决方法,分享给大家:问题描述:一个主页面,需要联通一到两个子页面,子页面传值到主页面,主页面更新
当重复设置某些属性为相同的值时,不会同步到view层。 例如:每次将scroll-view组件的scroll-top属性值设置为0,只有第一次能顺利返回顶部。 这和props的单向数据流特性有关
uni-app 是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、Web(响应式)、以及各种小程序(微信/支付宝/百度/头条/QQ/钉钉/淘宝)、快应用等多个平台。
基于QR.createQrCodeImg方法生成二维码,在使用uniapp开发的小程序,app应用,某一页面需要将网页Url生成的二维码进行展示,即将Url生成为base64的二维码图片。
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!