微信小程序工具函数封装


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 相关文章推荐
基于jquery.Jcrop的头像编辑器
Mar 01 Javascript
用js控制组织结构图可以任意拖拽到指定位置
Jan 17 Javascript
KVM虚拟化技术之使用Qemu-kvm创建和管理虚拟机的方法
Oct 05 Javascript
浅谈Angularjs link和compile的使用区别
Oct 21 Javascript
在DWR中实现直接获取一个JAVA类的返回值的两种方法
Dec 25 Javascript
Angularjs自定义指令实现三级联动 选择地理位置
Feb 13 Javascript
js时间查询插件使用详解
Apr 07 Javascript
Js利用prototype自定义数组方法示例
Oct 20 Javascript
详解vue静态资源打包中的坑与解决方案
Feb 05 Javascript
js中的数组对象排序分析
Dec 11 Javascript
vue页面加载时的进度条功能(实例代码)
Jan 13 Javascript
JavaScript设计模式之原型模式详情
Jun 21 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
如何使用Linux的Crontab定时执行PHP脚本的方法
2011/12/19 PHP
Thinkphp使用mongodb数据库实现多条件查询方法
2014/06/26 PHP
基于GD2图形库的PHP生成图片缩略图类代码分享
2015/02/08 PHP
分析PHP中单双引号的误区和双引号小隐患
2016/07/19 PHP
jquery 学习笔记 传智博客佟老师附详细注释
2020/09/12 Javascript
Javascript开发之三数组对象实例介绍
2012/11/12 Javascript
js获取TreeView控件选中节点的Text和Value值的方法
2012/11/24 Javascript
Javascript中Array.prototype.map()详解
2014/10/22 Javascript
Javascript技术栈中的四种依赖注入小结
2016/02/27 Javascript
js实现hashtable的赋值、取值、遍历操作实例详解
2016/12/25 Javascript
详解React native全局变量的使用(跨组件的通信)
2017/09/07 Javascript
JS排序算法之冒泡排序,选择排序与插入排序实例分析
2017/12/13 Javascript
记一次webpack3升级webpack4的踩坑经历
2018/06/12 Javascript
微信小程序云开发之云函数详解
2019/05/16 Javascript
Node.js API详解之 dns模块用法实例分析
2020/05/15 Javascript
在Python的Django框架下使用django-tagging的教程
2015/05/30 Python
详解python中 os._exit() 和 sys.exit(), exit(0)和exit(1) 的用法和区别
2017/06/23 Python
对python 各种删除文件失败的处理方式分享
2018/04/24 Python
使用PyOpenGL绘制三维坐标系实例
2019/12/24 Python
Python 2种方法求某个范围内的所有素数(质数)
2020/01/31 Python
python爬虫使用正则爬取网站的实现
2020/08/03 Python
jupyter notebook快速入门及使用详解
2020/11/13 Python
Appium+Python实现简单的自动化登录测试的实现
2021/01/26 Python
一个入门级python爬虫教程详解
2021/01/27 Python
Web页面中八种创建多列等高(等高列布局)的实现技术
2012/12/24 HTML / CSS
CSS3绘制超炫的上下起伏波动进度加载动画
2016/04/21 HTML / CSS
MATCHESFASHION.COM法国官网:英国奢侈品零售商
2018/01/04 全球购物
全球领先的在线cosplay服装商店:RoleCosplay
2020/01/18 全球购物
新西兰最大的天然保健及护肤品网站:HealthPost(直邮中国)
2021/02/13 全球购物
季度思想汇报
2014/01/01 职场文书
幼儿园大班毕业感言
2014/02/06 职场文书
研究生考核个人自我鉴定
2014/03/27 职场文书
军人离婚协议书样本
2014/10/21 职场文书
班组长如何制订适合本班组的工作计划?
2019/07/10 职场文书
MySQL数据库超时设置配置的方法实例
2021/10/15 MySQL
Java中的继承、多态以及封装
2022/04/11 Java/Android