微信小程序工具函数封装


Posted in Javascript onOctober 28, 2019

本文实例为大家分享了微信小程序工具函数封装的具体代码,供大家参考,具体内容如下

const formatTime = date => {
 const year = date.getFullYear()
 const month = date.getMonth() + 1
 const day = date.getDate()
 const hour = date.getHours()
 const minute = date.getMinutes()
 const second = date.getSeconds()
 return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':')
}
 
const formatNumber = n => {
 n = n.toString()
 return n[1] ? n : '0' + n
}
 
function http(url, callback) {
 var that = this;
 wx.request({
 url: url,
 success: function (res) {
  callback(res.data.data);
 }
 })
}
 
 
function processMasterData(data) {
 return data;
}
 
function jiamiParams(obj) {
 var str = '';
 var newKey = Object.values(obj);
 
 for (var i = 0; i < newKey.length; i++) {
 str += newKey[i];
 }
 return md5(str + 'yueduqiyuan');
}
 
function tiaozhuanAd(leixing, id) {
 switch (leixing) {
 case 1:
  wx.navigateTo({
  url: 'book-detail/book-detail?id=' + id,
  });
  break;
 
 case 2:
  wx.navigateTo({
  url: '../page-url/page-url?url=' + id,
  });
  break;
 case 3:
  wx.navigateTo({
  url: 'index-searchresult/index-searchresult?key=' + id,
  });
  break;
 
 case 4:
  wx.navigateTo({
  url: 'famous-master/famous-master?id=' + id,
  });
  break;
 
 case 5:
  break;
 
 }
 
}
 
 
function tiaozhuan(leixing, id) {
 switch (leixing) {
 case 1:
  wx.navigateTo({
  url: '../heji-list/heji-list?category=' + id,
  });
  break;
 case 2:
  wx.navigateTo({
  url: '../heji-list/heji-list?category=' + id,
  });
  break;
 case 3:
  wx.navigateTo({
  url: '../page-url/page-url?url=' + id,
  });
  break;
 case 4:
  wx.navigateTo({
  url: '../famous-master/famous-master?id=' + id,
  });
  break;
 case 5:
  wx.navigateTo({
  url: '../heji-list/heji-list?age=' + id,
  });
  break;
 case 6:
  wx.navigateTo({
  url: '../hotbook/hotbook?typename=新到图书',
  });
  break;
 case 7:
  wx.navigateTo({
  url: '../hotbook/hotbook?typename=热门图书',
  });
  break;
 
 case "8888":
  wx.navigateTo({
  url: '../hotbook/hotbook?typename=' + id,
  });
  break;
 case "9999":
  {
  wx.navigateTo({
   url: '../book-detail/book-detail?id=' + id,
  });
  break;
  }
 }
 
}
 
/**
 * 二位数组键名排序
 */
function objKeySort(obj) {
 var newkey = Object.keys(obj).sort();
 var newObj = {};
 for (var i = 0; i < newkey.length; i++) {
 newObj[newkey[i]] = obj[newkey[i]];
 }
 return newObj;
}
 
 
 
function md5(string) {
 var x = Array();
 var k, AA, BB, CC, DD, a, b, c, d;
 var S11 = 7, S12 = 12, S13 = 17, S14 = 22;
 var S21 = 5, S22 = 9, S23 = 14, S24 = 20;
 var S31 = 4, S32 = 11, S33 = 16, S34 = 23;
 var S41 = 6, S42 = 10, S43 = 15, S44 = 21;
 string = Utf8Encode(string);
 x = ConvertToWordArray(string);
 a = 0x67452301;
 b = 0xEFCDAB89;
 c = 0x98BADCFE;
 d = 0x10325476;
 for (k = 0; k < x.length; k += 16) {
 AA = a;
 BB = b;
 CC = c;
 DD = d;
 a = FF(a, b, c, d, x[k + 0], S11, 0xD76AA478);
 d = FF(d, a, b, c, x[k + 1], S12, 0xE8C7B756);
 c = FF(c, d, a, b, x[k + 2], S13, 0x242070DB);
 b = FF(b, c, d, a, x[k + 3], S14, 0xC1BDCEEE);
 a = FF(a, b, c, d, x[k + 4], S11, 0xF57C0FAF);
 d = FF(d, a, b, c, x[k + 5], S12, 0x4787C62A);
 c = FF(c, d, a, b, x[k + 6], S13, 0xA8304613);
 b = FF(b, c, d, a, x[k + 7], S14, 0xFD469501);
 a = FF(a, b, c, d, x[k + 8], S11, 0x698098D8);
 d = FF(d, a, b, c, x[k + 9], S12, 0x8B44F7AF);
 c = FF(c, d, a, b, x[k + 10], S13, 0xFFFF5BB1);
 b = FF(b, c, d, a, x[k + 11], S14, 0x895CD7BE);
 a = FF(a, b, c, d, x[k + 12], S11, 0x6B901122);
 d = FF(d, a, b, c, x[k + 13], S12, 0xFD987193);
 c = FF(c, d, a, b, x[k + 14], S13, 0xA679438E);
 b = FF(b, c, d, a, x[k + 15], S14, 0x49B40821);
 a = GG(a, b, c, d, x[k + 1], S21, 0xF61E2562);
 d = GG(d, a, b, c, x[k + 6], S22, 0xC040B340);
 c = GG(c, d, a, b, x[k + 11], S23, 0x265E5A51);
 b = GG(b, c, d, a, x[k + 0], S24, 0xE9B6C7AA);
 a = GG(a, b, c, d, x[k + 5], S21, 0xD62F105D);
 d = GG(d, a, b, c, x[k + 10], S22, 0x2441453);
 c = GG(c, d, a, b, x[k + 15], S23, 0xD8A1E681);
 b = GG(b, c, d, a, x[k + 4], S24, 0xE7D3FBC8);
 a = GG(a, b, c, d, x[k + 9], S21, 0x21E1CDE6);
 d = GG(d, a, b, c, x[k + 14], S22, 0xC33707D6);
 c = GG(c, d, a, b, x[k + 3], S23, 0xF4D50D87);
 b = GG(b, c, d, a, x[k + 8], S24, 0x455A14ED);
 a = GG(a, b, c, d, x[k + 13], S21, 0xA9E3E905);
 d = GG(d, a, b, c, x[k + 2], S22, 0xFCEFA3F8);
 c = GG(c, d, a, b, x[k + 7], S23, 0x676F02D9);
 b = GG(b, c, d, a, x[k + 12], S24, 0x8D2A4C8A);
 a = HH(a, b, c, d, x[k + 5], S31, 0xFFFA3942);
 d = HH(d, a, b, c, x[k + 8], S32, 0x8771F681);
 c = HH(c, d, a, b, x[k + 11], S33, 0x6D9D6122);
 b = HH(b, c, d, a, x[k + 14], S34, 0xFDE5380C);
 a = HH(a, b, c, d, x[k + 1], S31, 0xA4BEEA44);
 d = HH(d, a, b, c, x[k + 4], S32, 0x4BDECFA9);
 c = HH(c, d, a, b, x[k + 7], S33, 0xF6BB4B60);
 b = HH(b, c, d, a, x[k + 10], S34, 0xBEBFBC70);
 a = HH(a, b, c, d, x[k + 13], S31, 0x289B7EC6);
 d = HH(d, a, b, c, x[k + 0], S32, 0xEAA127FA);
 c = HH(c, d, a, b, x[k + 3], S33, 0xD4EF3085);
 b = HH(b, c, d, a, x[k + 6], S34, 0x4881D05);
 a = HH(a, b, c, d, x[k + 9], S31, 0xD9D4D039);
 d = HH(d, a, b, c, x[k + 12], S32, 0xE6DB99E5);
 c = HH(c, d, a, b, x[k + 15], S33, 0x1FA27CF8);
 b = HH(b, c, d, a, x[k + 2], S34, 0xC4AC5665);
 a = II(a, b, c, d, x[k + 0], S41, 0xF4292244);
 d = II(d, a, b, c, x[k + 7], S42, 0x432AFF97);
 c = II(c, d, a, b, x[k + 14], S43, 0xAB9423A7);
 b = II(b, c, d, a, x[k + 5], S44, 0xFC93A039);
 a = II(a, b, c, d, x[k + 12], S41, 0x655B59C3);
 d = II(d, a, b, c, x[k + 3], S42, 0x8F0CCC92);
 c = II(c, d, a, b, x[k + 10], S43, 0xFFEFF47D);
 b = II(b, c, d, a, x[k + 1], S44, 0x85845DD1);
 a = II(a, b, c, d, x[k + 8], S41, 0x6FA87E4F);
 d = II(d, a, b, c, x[k + 15], S42, 0xFE2CE6E0);
 c = II(c, d, a, b, x[k + 6], S43, 0xA3014314);
 b = II(b, c, d, a, x[k + 13], S44, 0x4E0811A1);
 a = II(a, b, c, d, x[k + 4], S41, 0xF7537E82);
 d = II(d, a, b, c, x[k + 11], S42, 0xBD3AF235);
 c = II(c, d, a, b, x[k + 2], S43, 0x2AD7D2BB);
 b = II(b, c, d, a, x[k + 9], S44, 0xEB86D391);
 a = AddUnsigned(a, AA);
 b = AddUnsigned(b, BB);
 c = AddUnsigned(c, CC);
 d = AddUnsigned(d, DD);
 }
 var temp = WordToHex(a) + WordToHex(b) + WordToHex(c) + WordToHex(d);
 return temp.toUpperCase();
}
function RotateLeft(lValue, iShiftBits) {
 return (lValue << iShiftBits) | (lValue >>> (32 - iShiftBits));
}
function AddUnsigned(lX, lY) {
 var lX4, lY4, lX8, lY8, lResult;
 lX8 = (lX & 0x80000000);
 lY8 = (lY & 0x80000000);
 lX4 = (lX & 0x40000000);
 lY4 = (lY & 0x40000000);
 lResult = (lX & 0x3FFFFFFF) + (lY & 0x3FFFFFFF);
 if (lX4 & lY4) {
 return (lResult ^ 0x80000000 ^ lX8 ^ lY8);
 }
 if (lX4 | lY4) {
 if (lResult & 0x40000000) {
  return (lResult ^ 0xC0000000 ^ lX8 ^ lY8);
 } else {
  return (lResult ^ 0x40000000 ^ lX8 ^ lY8);
 }
 } else {
 return (lResult ^ lX8 ^ lY8);
 }
}
function F(x, y, z) {
 return (x & y) | ((~x) & z);
}
function G(x, y, z) {
 return (x & z) | (y & (~z));
}
function H(x, y, z) {
 return (x ^ y ^ z);
}
function I(x, y, z) {
 return (y ^ (x | (~z)));
}
function FF(a, b, c, d, x, s, ac) {
 a = AddUnsigned(a, AddUnsigned(AddUnsigned(F(b, c, d), x), ac));
 return AddUnsigned(RotateLeft(a, s), b);
}
function GG(a, b, c, d, x, s, ac) {
 a = AddUnsigned(a, AddUnsigned(AddUnsigned(G(b, c, d), x), ac));
 return AddUnsigned(RotateLeft(a, s), b);
}
function HH(a, b, c, d, x, s, ac) {
 a = AddUnsigned(a, AddUnsigned(AddUnsigned(H(b, c, d), x), ac));
 return AddUnsigned(RotateLeft(a, s), b);
}
function II(a, b, c, d, x, s, ac) {
 a = AddUnsigned(a, AddUnsigned(AddUnsigned(I(b, c, d), x), ac));
 return AddUnsigned(RotateLeft(a, s), b);
}
function ConvertToWordArray(string) {
 var lWordCount;
 var lMessageLength = string.length;
 var lNumberOfWords_temp1 = lMessageLength + 8;
 var lNumberOfWords_temp2 = (lNumberOfWords_temp1 - (lNumberOfWords_temp1 % 64)) / 64;
 var lNumberOfWords = (lNumberOfWords_temp2 + 1) * 16;
 var lWordArray = Array(lNumberOfWords - 1);
 var lBytePosition = 0;
 var lByteCount = 0;
 while (lByteCount < lMessageLength) {
 lWordCount = (lByteCount - (lByteCount % 4)) / 4;
 lBytePosition = (lByteCount % 4) * 8;
 lWordArray[lWordCount] = (lWordArray[lWordCount] | (string.charCodeAt(lByteCount) << lBytePosition));
 lByteCount++;
 }
 lWordCount = (lByteCount - (lByteCount % 4)) / 4;
 lBytePosition = (lByteCount % 4) * 8;
 lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80 << lBytePosition);
 lWordArray[lNumberOfWords - 2] = lMessageLength << 3;
 lWordArray[lNumberOfWords - 1] = lMessageLength >>> 29;
 return lWordArray;
}
function WordToHex(lValue) {
 var WordToHexValue = "", WordToHexValue_temp = "", lByte, lCount;
 for (lCount = 0; lCount <= 3; lCount++) {
 lByte = (lValue >>> (lCount * 8)) & 255;
 WordToHexValue_temp = "0" + lByte.toString(16);
 WordToHexValue = WordToHexValue + WordToHexValue_temp.substr(WordToHexValue_temp.length - 2, 2);
 }
 return WordToHexValue;
}
function Utf8Encode(string) {
 var utftext = "";
 for (var n = 0; n < string.length; n++) {
 var c = string.charCodeAt(n);
 if (c < 128) {
  utftext += String.fromCharCode(c);
 } else if ((c > 127) && (c < 2048)) {
  utftext += String.fromCharCode((c >> 6) | 192);
  utftext += String.fromCharCode((c & 63) | 128);
 } else {
  utftext += String.fromCharCode((c >> 12) | 224);
  utftext += String.fromCharCode(((c >> 6) & 63) | 128);
  utftext += String.fromCharCode((c & 63) | 128);
 }
 }
 return utftext;
}
function requestLoading(url, params, message) {
 let promise = new Promise((resolve, reject) => {
 wx.showNavigationBarLoading()
 if (message != "") {
  wx.showLoading({
  title: message
  })
 }
 var timestamp = Date.parse(new Date());
 timestamp = timestamp / 1000;
 params['openid'] = wx.getStorageSync('openid');
 var newParams = this.objKeySort(params);
 newParams['unionid'] = wx.getStorageSync('unionid');
 newParams['antime'] = timestamp;
 newParams['key'] = this.jiamiParams(newParams);
 wx.request({
  url: url,
  data: newParams,
  header: {
  'content-type': 'application/x-www-form-urlencoded'
  },
  method: 'post',
  success: function (res) {
 
  wx.hideNavigationBarLoading()
  if (message != "") {
   wx.hideLoading()
  }
 
  if (res.statusCode == 200) {
   resolve(res.data)
  } else {
   reject(res)
  }
  },
  fail: function (res) {
  wx.hideNavigationBarLoading()
  if (message != "") {
   wx.hideLoading()
  }
  reject('网络出错!')
  }
 })
 
 
 })
 return promise
}
 
module.exports = {
 http: http,
 formatTime: formatTime,
 requestLoading: requestLoading,
 tiaozhuan: tiaozhuan,
 tiaozhuanAd: tiaozhuanAd,
 objKeySort: objKeySort,
 jiamiParams: jiamiParams
}

这个工具函数中用promise封装了微信小程序数据请求的方法:单独拿出来(但不能单独使用哦,因为还需要借助上面的一些工具函数)

function requestLoading(url, params, message) {
 let promise = new Promise((resolve, reject) => {
 wx.showNavigationBarLoading()
 if (message != "") {
  wx.showLoading({
  title: message
  })
 }
 var timestamp = Date.parse(new Date());
 timestamp = timestamp / 1000;
 params['openid'] = wx.getStorageSync('openid');
 var newParams = this.objKeySort(params);
 newParams['unionid'] = wx.getStorageSync('unionid');
 newParams['antime'] = timestamp;
 newParams['key'] = this.jiamiParams(newParams);
 wx.request({
  url: url,
  data: newParams,
  header: {
  'content-type': 'application/x-www-form-urlencoded'
  },
  method: 'post',
  success: function (res) {
 
  wx.hideNavigationBarLoading()
  if (message != "") {
   wx.hideLoading()
  }
 
  if (res.statusCode == 200) {
   resolve(res.data)
  } else {
   reject(res)
  }
  },
  fail: function (res) {
  wx.hideNavigationBarLoading()
  if (message != "") {
   wx.hideLoading()
  }
  reject('网络出错!')
  }
 })
 
 
 })
 return promise
}

使用方法:

util1.requestLoading(url, param, "正在加载数据").then(res => {
  if (res.status == 1) {
  let bannerList = res.data
  that.setData({
   bannerList
  });
  }
 }).catch(()=>{
  wx.showToast({
  title: '加载数据失败',
  })
 })

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript学习笔记1 数据类型
Jan 11 Javascript
javascript 弹出窗口中是否显示地址栏的实现代码
Apr 14 Javascript
javascript获取鼠标位置部分的实例代码(兼容IE,FF)
Aug 05 Javascript
javascript简单实现命名空间效果
Mar 06 Javascript
javascript实例--教你实现扑克牌洗牌功能
May 15 Javascript
request请求获取参数的实现方法(post和get两种方式)
Sep 27 Javascript
有关文件上传 非ajax提交 得到后台数据问题
Oct 12 Javascript
js实现4个方向滚动的球
Mar 06 Javascript
js实现动态增加文件域表单功能
Oct 22 Javascript
详解Webstorm 下的Angular2.0开发之路(图文)
Dec 06 Javascript
Vuex的各个模块封装的实现
Jun 05 Javascript
解决vue scoped html样式无效的问题
Oct 24 Javascript
js实现3D照片墙效果
Oct 28 #Javascript
vue+webpack 更换主题N种方案优劣分析
Oct 28 #Javascript
使用Vue调取接口,并渲染数据的示例代码
Oct 28 #Javascript
JavaScript 反射和属性赋值实例解析
Oct 28 #Javascript
vue 解决数组赋值无法渲染在页面的问题
Oct 28 #Javascript
在vue中把含有html标签转为html渲染页面的实例
Oct 28 #Javascript
详解关闭令人抓狂的ESlint 语法检测配置方法
Oct 28 #Javascript
You might like
PHP 函数学习简单小结
2010/07/08 PHP
php环境套包 dedeampz 伪静态设置示例
2014/03/26 PHP
PHP实现的多维数组排序算法分析
2018/02/10 PHP
Javascript Math对象
2009/08/13 Javascript
JS操作数据库的实例代码
2013/10/17 Javascript
javascript中的nextSibling使用陷(da)阱(keng)
2014/05/05 Javascript
javascript学习笔记(五)原型和原型链详解
2014/10/08 Javascript
Javascript中的对象和原型(二)
2016/08/12 Javascript
关于JavaScript和jQuery的类型判断详解
2016/10/08 Javascript
jQuery基于事件控制实现点击显示内容下拉效果
2017/03/07 Javascript
js中innerText/textContent和innerHTML与target和currentTarget的区别
2019/01/21 Javascript
webpack4.x下babel的安装、配置及使用详解
2019/03/07 Javascript
原生js实现获取form表单数据代码实例
2019/03/27 Javascript
Vue中实现权限控制的方法示例
2019/06/07 Javascript
vue子路由跳转实现tab选项卡
2019/07/24 Javascript
JavaScript自定义超时API代码实例
2020/04/30 Javascript
Python 类与元类的深度挖掘 I【经验】
2016/05/06 Python
pip安装Python库时遇到的问题及解决方法
2017/11/23 Python
Python 处理文件的几种方式
2019/08/23 Python
Python tkinter实现图片标注功能(完整代码)
2019/12/08 Python
python deque模块简单使用代码实例
2020/03/12 Python
快速解决Django关闭Debug模式无法加载media图片与static静态文件
2020/04/07 Python
Python实现初始化不同的变量类型为空值
2020/06/02 Python
使用Keras中的ImageDataGenerator进行批次读图方式
2020/06/17 Python
手把手教你从PyCharm安装到激活(最新激活码),亲测有效可激活至2089年
2020/11/25 Python
HTML5实现经典坦克大战坦克乱走还能发出一个子弹
2013/09/02 HTML / CSS
Html5 语法与规则简要概述
2014/07/29 HTML / CSS
Viking Direct荷兰:购买办公用品
2019/06/20 全球购物
澳大利亚网上书店:QBD
2021/01/09 全球购物
测试驱动开发的主要步骤是什么
2014/12/10 面试题
毕业生个人求职的自我评价
2013/10/28 职场文书
平安工地建设方案
2014/05/06 职场文书
乒乓球兴趣小组活动总结
2014/07/08 职场文书
工伤私了协议书范本
2014/11/24 职场文书
2014年销售工作总结与计划
2014/12/01 职场文书
Python中的tkinter库简单案例详解
2022/01/22 Python