微信小程序工具函数封装


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 相关文章推荐
cnblogs TagCloud基于jquery的实现代码
Jun 11 Javascript
iframe自适应宽度、高度 ie6 7 8,firefox 3.86下测试通过
Jul 29 Javascript
js 上传图片预览问题
Dec 06 Javascript
jquery easyui combox一些实用的小方法
Dec 25 Javascript
javaScript中两个等于号和三个等于号之间的区别介绍
Jun 27 Javascript
JS中产生标识符方式的演变
Jun 12 Javascript
javascript实现确定和取消提示框效果
Jul 10 Javascript
微信公众平台开发教程(六)获取个性二维码的实例
Dec 02 Javascript
ES6中字符串string常用的新增方法小结
Nov 07 Javascript
详解Vue webapp项目通过HBulider打包原生APP
Jun 29 Javascript
D3.js(v3)+react 实现带坐标与比例尺的散点图 (V3版本)
May 09 Javascript
详解JSON.stringify()的5个秘密特性
May 26 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
PHP4实际应用经验篇(5)
2006/10/09 PHP
PHP分页显示制作详细讲解
2008/11/19 PHP
php date()日期时间函数详解
2010/05/16 PHP
PHP中常用的三种设计模式详解【单例模式、工厂模式、观察者模式】
2019/06/14 PHP
PHP MVC框架中类的自动加载机制实例分析
2019/09/18 PHP
laravel实现上传图片,并且制作缩略图,按照日期存放的代码
2019/10/16 PHP
一步一步教你写一个jQuery的插件教程(Plugin)
2009/09/03 Javascript
JQuery EasyUI 数字格式化处理示例
2014/05/05 Javascript
JavaScript 学习笔记之变量及其作用域
2015/01/14 Javascript
再谈JavaScript线程
2015/07/10 Javascript
浅析node连接数据库(express+mysql)
2015/11/30 Javascript
浅谈angular懒加载的一些坑
2016/08/20 Javascript
vue项目常用组件和框架结构介绍
2017/12/24 Javascript
Vue2.0 实现移动端图片上传功能
2018/05/30 Javascript
js使用ajax传值给后台,后台返回字符串处理方法
2018/08/08 Javascript
详解如何webpack使用DllPlugin
2018/09/30 Javascript
微信小程序canvas.drawImage完全显示图片问题的解决
2018/11/30 Javascript
TypeScript开发Node.js程序的方法
2019/04/30 Javascript
JavaScript函数式编程(Functional Programming)高阶函数(Higher order functions)用法分析
2019/05/22 Javascript
JavaScript函数式编程(Functional Programming)组合函数(Composition)用法分析
2019/05/22 Javascript
Python中用max()方法求最大值的介绍
2015/05/15 Python
在Python的Flask框架中构建Web表单的教程
2016/06/04 Python
Python MySQLdb 使用utf-8 编码插入中文数据问题
2018/03/13 Python
Python生成器定义与简单用法实例分析
2018/04/30 Python
Flask框架实现给视图函数增加装饰器操作示例
2018/07/16 Python
对django xadmin自定义菜单的实例详解
2019/01/03 Python
详解Python3 pandas.merge用法
2019/09/05 Python
Python 元组拆包示例(Tuple Unpacking)
2019/12/24 Python
Python实现给PDF添加水印的方法
2021/01/25 Python
英国知名美妆护肤在线商城:Zest Beauty
2018/04/24 全球购物
FragranceNet中文网:北美健康美容线上零售商
2020/08/26 全球购物
教师实习自我鉴定
2013/12/18 职场文书
管理专员自荐信
2014/01/26 职场文书
违反校纪校规检讨书
2014/02/15 职场文书
检讨书怎么写?
2019/06/21 职场文书
python tqdm用法及实例详解
2021/06/16 Python