微信小程序工具函数封装


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 全等号运算符使用说明
May 31 Javascript
基于JQuery的访问WebService的代码(可访问Java[Xfire])
Nov 19 Javascript
jquery实现加载等待效果示例
Sep 25 Javascript
JS 屏蔽键盘不可用与鼠标右键不可用的方法
Nov 18 Javascript
JavaScript保留关键字汇总
Dec 01 Javascript
Jquery插件之Fancybox丰富的弹出层效果附源码下载
Dec 02 Javascript
详解Node.js包的工程目录与NPM包管理器的使用
Feb 16 Javascript
使用javascript插入样式
Mar 14 Javascript
layui弹出层按钮提交iframe表单的方法
Aug 20 Javascript
angular.js实现列表orderby排序的方法
Oct 02 Javascript
js使用formData实现批量上传
Mar 27 Javascript
详解Vue-cli3 项目在安卓低版本系统和IE上白屏问题解决
Apr 14 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
收音机的保养
2021/03/01 无线电
php编程实现获取excel文档内容的代码实例
2011/06/28 PHP
php安全开发 添加随机字符串验证,防止伪造跨站请求
2013/02/14 PHP
微信营销平台系统?刮刮乐的开发
2014/06/10 PHP
PHP制作万年历
2015/01/07 PHP
javascript 面向对象全新理练之数据的封装
2009/12/03 Javascript
javascript中clone对象详解
2014/12/03 Javascript
JavaScript引用类型和基本类型详解
2016/01/06 Javascript
获取阴历(农历)和当前日期的js代码
2016/02/15 Javascript
Javascript 5种方法实现过滤删除前后所有空格
2016/06/22 Javascript
js实现消息滚动效果
2017/01/18 Javascript
vue.js组件之间传递数据的方法
2017/07/10 Javascript
微信小程序收藏功能的实现代码
2018/06/12 Javascript
jQuery+css last-child实现选择最后一个子元素操作示例
2018/12/10 jQuery
基于JS实现父组件的请求服务过程解析
2019/10/14 Javascript
非常漂亮的js烟花效果
2020/03/10 Javascript
js实现文章目录索引导航(table of content)
2020/05/10 Javascript
python 将字符串转换成字典dict
2013/03/24 Python
python list转dict示例分享
2014/01/28 Python
浅谈MySQL中的触发器
2015/05/05 Python
Python 模板引擎的注入问题分析
2017/01/01 Python
教你利用Python玩转histogram直方图的五种方法
2018/07/30 Python
pandas中apply和transform方法的性能比较及区别介绍
2018/10/30 Python
Python Django框架单元测试之文件上传测试示例
2019/05/17 Python
python IDLE 背景以及字体大小的修改方法
2019/07/12 Python
python pandas获取csv指定行 列的操作方法
2019/07/12 Python
django组合搜索实现过程详解(附代码)
2019/08/06 Python
win10子系统python开发环境准备及kenlm和nltk的使用教程
2019/10/14 Python
Django 限制访问频率的思路详解
2019/12/24 Python
Python timeit模块的使用实践
2020/01/13 Python
Python selenium爬虫实现定时任务过程解析
2020/06/08 Python
利用Python将多张图片合成视频的实现
2020/11/23 Python
写一个方法1000的阶乘
2012/11/21 面试题
经典C++面试题一
2016/11/06 面试题
个人对照检查材料思想汇报
2014/09/26 职场文书
php7中停止php-fpm服务的方法详解
2021/05/09 PHP