持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第5天,点击查看活动详情
在微信小程序中需要封装一些公共的使用方法,这些方法一般存放于utils文件夹下面,名字随便起,我是习惯于叫util.js,这次主要记录一些我做微信小程序开发时的用到的公共方法
方法一:ios 时间兼容转换
众所周知ios解析不了横线式的时间例如2020-10-02;但能解析以斜杠连接的时间如:2020/10/02;
function formatDateForIOS(date_str) {
if (date_str.indexOf('-') > -1) {
return (date_str + '').replace(/-/g, '/')
} else {
return date_str;
}
}
方法二:提示框
微信提供的wx.showToast()提示,项目中用的很多比如请求时,或者需要给用户提示都会用到这里时对showToast做了一个简单的封装
function showToast(title, icon, duration, image, mask) {
wx.showToast({
title: title || '',
duration: duration || 1500,
icon: icon || 'none',
image: image || '',
mask: mask || false,
success: (res) => {},
fail: (res) => {},
complete: (res) => {},
})
};
方法三:判断当前机型是否是IOS全面屏
随着手机全面屏的使用微信小程序页面的底部导航ios和安卓是不同的,安卓不会计算底部导航,ios时会把底部导航算入页面的高度中,这样UI给的页面底部留白就会有差异,所以需要我们进行当前机型的判断做出针对性处理。这里是判断了当前苹果所有带有home键的机型,只要是ios且不是以上有home键的机型,小程序页面底部导航都需要做处理。
function currentPhoneType(callback) {
wx.getSystemInfo({
success: res => {
let modelmes = res.model;
if (res.platform == 'ios') {
let isPhone = true;
let iphone = ['iPhone 4', 'iPhone 5', 'iPhone 6', 'iPhone 7', 'iPhone 8', 'iPhone SE']
iphone.forEach(item => {
if (modelmes.search(item) != -1) {
isPhone = false
}
})
if (callback) callback(isPhone)
} else {
if (callback) callback(false)
}
},
fail: (res) => {
console.log('获取机型失败', res);
if (callback) callback(false)
}
})
}
方法四:文件字节转MB
这个方法适用于上传文件之后需要展示文件的大小
function formatFileSize(size) {
if (!size) return 0;
return (size / 1024 / 1024).toFixed(2)
};
方法五:获取get请求后面的参数
此方法用于截取webview链接后面的参数,有时候后返会返回一个web链接需要我们跳转webview,且有些参数需要我们 单独进行判断,
function getSplitUrl(url) {
if (!url || !url.result) return;
url = url.result;
if (url.indexOf('?') == '-1') return;
let arr = url.split('?');
let urlObj = {};
if (url.indexOf('&') == '-1') {
let c_arr = arr[1].split('=');
urlObj[c_arr[0]] = c_arr[1];
} else {
let c_arr = arr[1].split('&');
c_arr.forEach((item) => {
let c_c_arr = item.split('=');
urlObj[c_c_arr[0]] = c_c_arr[1];
})
};
return urlObj;
};