微信小程序封装的公共常用方法(一)

450 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 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;
};