天津网站建设zhy88,微网站后台,百度关键词多少钱一个月,网络平台管理制度一个完整的前端项目往往会进行一些必要的抽取公用代码进行封装#xff0c;这里记录js常用工具及统一的公共请求的封装。
一 2017年 第一版web管理后台在用 web后台管理页面用
/*** Created by hua on 2017/8/24.*/
var requestResult{success :0,failure:1,failureMsg:2
}j… 一个完整的前端项目往往会进行一些必要的抽取公用代码进行封装这里记录js常用工具及统一的公共请求的封装。
一 2017年 第一版web管理后台在用 web后台管理页面用
/*** Created by hua on 2017/8/24.*/
var requestResult{success :0,failure:1,failureMsg:2
}jx{reqAjax:function (isSync,url,fnSuccess,fnFailure) {$.ajax({type: post,dataType:json,async: isSync||true,url: url,success: function (data) {console.log(data);if (data.code requestResult.success ){if ( jQuery.isFunction( fnSuccess ) ) {fnSuccess.call();}else{alert(操作成功。);}}else{if (data.code requestResult.failure){alert(操作失败);}if (data.code requestResult.failureMsg){if (data.errMsg!){alert(data.errMsg);}else{alert(操作失败返回信息异常)}}if ( jQuery.isFunction( fnFailure ) ) {fnFailure.call();}}},error:function(err){alert(系统请求错误请联系管理员);}});},req:function (url,fnSuccess) {jx.reqAjax(false,url, fnSuccess,null);},createNativeRequest: function createRequest(){var xmlHttp;try{// Firefox, Opera 8.0, SafarixmlHttpnew XMLHttpRequest();}catch (e){// Internet Explorertry{xmlHttpnew ActiveXObject(Msxml2.XMLHTTP);}catch (e){try{xmlHttpnew ActiveXObject(Microsoft.XMLHTTP);}catch (e){alert(您的浏览器不支持登陆);return false;}}}return xmlHttp;},nativeReq:function (async,url,param,fuSccess,fuFail) {console.log(using native ajax.);var xmlhttp jx.createNativeRequest();console.log(create native xmlhttp);console.log(xmlhttp);xmlhttp.open(POST,url,async||false);// 为空时同步xmlhttp.setRequestHeader(Content-type,application/x-www-form-urlencoded);if (!async){xmlhttp.send(param);var result xmlhttp.responseText;console.log(result);return result;}else{xmlhttp.onreadystatechangefunction state_Change() {if (xmlhttp.readyState4){// 4 loadedif (xmlhttp.status200) {if (fuSccess typeof(fuSccess) function) {fuSccess();}}else{if (fuFail typeof(fuFail) function) {fuFail();}}}};xmlhttp.send(param);}}};jxCookie{setCookie:function (name,value){ var Days 7;var exp new Date();exp.setTime(exp.getTime() Days*24*60*60*1000);document.cookie name escape (value) ;expires exp.toGMTString();},getCookie:function (name){var arr,regnew RegExp((^| )name([^;]*)(;|$));if(arrdocument.cookie.match(reg))return unescape(arr[2]);elsereturn null;},delCookie:function (name){var exp new Date();exp.setTime(exp.getTime() - 1);var cvalgetCookie(name);if(cval!null)document.cookie name cval;expiresexp.toGMTString();}
}/**按钮等待进度 使用方法 jxProcess.run(butid, txtid, 1,30,已发送成功(_sec_)) 说明butid 和 txtid 为Input元素对象ID1 代表每隔几秒刷新次数 30代表等待30秒最后的参数为等时间显示到按钮的字体动态显示参数 _sec_ **/
var jxProcess{cur:60,jqElemBut:undefined,jqElemTxt:undefined,normalButLabel:undefined,dyTimeLabel:undefined,t:undefined,startWait:function () {if (jxProcess.cur 0){var label jxProcess.dyTimeLabel.replace(_sec_,jxProcess.cur);jxProcess.cur--;jxProcess.jqElemBut.html(label);}else{jxProcess.runStop();}},getJqueryObjById:function(id){var _id#id;return $(_id);},run:function (butId,txtId,timeSec,sumSec,dyTimeLabel) {var $elemBut jxProcess.getJqueryObjById(butId);var $elemTxtjxProcess.getJqueryObjById(txtId);$elemBut.attr(disabled,true);$elemTxt.attr(readonly,true);jxProcess.cur sumSec||60;jxProcess.jqElemBut$elemBut;jxProcess.jqElemTxt$elemTxt;jxProcess.normalButLabel$elemBut.html();jxProcess.dyTimeLabeldyTimeLabel||请耐心等待_sec_秒.jxProcess.t window.setInterval(jxProcess.startWait(),timeSec*1000||1000);},runStop:function () {if (jxProcess.t!undefined){jxProcess.jqElemBut.attr(disabled,false);if (jxProcess.jqElemTxt){jxProcess.jqElemTxt.attr(readonly,false);}jxProcess.jqElemBut.html(jxProcess.normalButLabel);window.clearInterval(jxProcess.t);console.log(clearInterval);jxProcess.tundefined;}}} 二 2018年在微信小程序在使用项目要求加密请求要用rc4算法加密。 //引用配置文件
const cfg require(../config.js);//打印调试信息
function tag(obj,msg) {console.log(new Date());console.log(begin(msg))try {console.log(obj);} catch (e) {console.log(print err !!!);}console.log(end(msg))
}//封包
function getPackage(data){var data_str;if(data){data_strJSON.stringify(data);}var pack{appKey:123456,version:1.0.0,isEncrypt:N,data:data_str}return pack;
}//取得用户openid
function getOpenid(){var openid getCache(openid);if (openid) {return openid;}wx.login({//获取codesuccess: function (res) {var code res.code //返回codevar url cfg.config.getOpenIdUrljs_code code grant_typeauthorization_code;tag(url,get openid url);wx.request({url: url,data: {},header: {content-type: application/json},success: function (res) {if (res.data.openid){setCache(openid, res.data.openid);}}})}});return openid;}function setCache(key, value) {if (key ! null value ! null) {try {wx.setStorageSync(key, value);tag(value, 保存缓存成功 key key);return true;} catch (e) {tag(e, 保存到缓存失败 key key value value);}}return false;
}function getCache(key) {var obj null;if (key) {try {obj wx.getStorageSync(key);tag(obj, 从缓存取 key key);} catch (e) {tag(e, 从缓存取数据失败 key key);}}return obj;
}function isMobile(mobile) {var myreg /^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1})|(17[0-9]{1}))\d{8})$/;return myreg.test(mobile);}//显示成功信息
function show(title,icon){wx.showToast({title: title||JX信息提示,icon:icon||success,duration: 1500});
}//显示错误信息
function showErr(title){show(title,loading);
}function getLoginToken(){return getCache(loginToken);
}function setLoginToken(loginToken) {return setCache(loginToken, loginToken);
}//原始处理不对外开发
function reqPackOrg(reqUrl, pack, fnSuccess, fnFail) {wx.request({method: POST,url: reqUrl,data: pack,header: {content-type: application/x-www-form-urlencoded,Cookie: loginTokengetLoginToken()},success: function (result) {tag(result, 结果处理);if (fnSuccess) {fnSuccess.call(result);} else {show(操作成功);}},fail: function (result) {tag(res, 调用API submit fail);if (fnFail) {fnFail.call(result);} else {showErr(操作失败);}},complete: function (result) {tag(result, 调用API结果submit complete);}});}//结合后台业务处理统一调用
function reqPack(reqUrl, pack, fnSuccess, fnFail, fnComplete){wx.request({method: POST,url: reqUrl,data: pack,header: {content-type: application/x-www-form-urlencoded},success: function (result) {var pack result.data;tag(pack, 结果处理);if (pack.resultCode200){var busData pack.data;if (typeof busData string) {busData busData.replace(/\ufeff/g, );//重点var jsonObj JSON.parse(busData);pack.data jsonObj;}if (fnSuccess) {if (fnSuccess.length 1){fnSuccess.call(this, pack);}else{fnSuccess.call();}} else {show(操作成功);}}else{if (fnFail) {fnFail.call(result);}else{if (pack.resultCode pack.resultMsg) {showErr( pack.resultMsg [ pack.resultCode ]);} else {showErr(处理错误);}}} },fail: function (result) {tag(res, 调用API submit fail);if (fnFail) {fnFail.call(result);}else{showErr(操作失败);}},complete: function (result) {tag(result, 调用API结果submit complete);if (fnComplete){fnComplete.call();}}});}function reqData(api, jsonData, fnSuccess, fnFail,fnComplete) {var reqUrlcfg.config.jx_urlapi;var pack getPackage(jsonData);reqPack(reqUrl, pack, fnSuccess, fnFail, fnComplete);}function req(api, fnSuccess, fnFail) {var reqUrl cfg.config.jx_url api;var pack getPackage(null);reqPack(reqUrl, pack, fnSuccess, fnFail,null)}let curUserInfo curUserInfo;function setUserInfoCache(userInfo) {var memberInfo {nickName: userInfo.nickName,org: userInfo};setCache(curUserInfo, memberInfo)}function getUserInfo(){return getCache(curUserInfo);}//每个业务页面初始化处理function init(){var tokengetLoginToken();tag(token,检测在线标识状态);if(!token){wx.redirectTo({url: cfg.config.loginUrl});}}module.exports {getPackage: getPackage,tag: tag,getOpenid: getOpenid, isMobile: isMobile,reqData: reqData,req:req, setUserInfoCache: setUserInfoCache,show: show, showErr: showErr,getLoginToken: getLoginToken,setLoginToken: setLoginToken,getUserInfo: getUserInfo,init: init}
三 2019年后公司开始接很多的项目小程序项目基本都用uni-app框架开发再优化一点根据使用情况对function request(method, reqUrl, pack, fnSuccess)去掉了失败函数传参。
use strict;
//TestServer
//var baseUrl http://192.168.22.193:8092//外网地址
var baseUrl http://47.xx.xx.57:8063//线上
// var baseUrl https://xcx.xxx.xxx//封包
function getPackage(data) {let data_str ;if (data) {data_str JSON.stringify(data);}let pack {language:1,isEncrypt: N,data: data_str}return pack;
}function request(method, reqUrl, pack, fnSuccess) {pack getPackage(pack);uni.request({method: method || POST,url: baseUrl reqUrl,data: pack,header: {Content-Type: application/x-www-form-urlencoded,Authorization: getCache(token)? getCache(token) : },success: function(result) {let pack result;if (fnSuccess) {if (fnSuccess.length 1) {fnSuccess.call(this, pack);} else if (fnSuccess.length 2) {fnSuccess.call(this, pack, pack.data.data);} else {fnSuccess.call();}} else {showToast(操作成功);}},fail: function(result) {try {if (result.errMsg.indexOf(request:fail) ! -1) {alert(似乎已断开与互联网的连接);} else {alert(操作失败);}} catch (e) {alert(操作失败);}}})
}function navigateTo(url) {uni.navigateTo({url: url});
}function switchTab(url) {uni.switchTab({url: url});
}function redirectTo(url) {uni.redirectTo({url: url});
}function showToast(title, icon) {uni.showToast({title: title || 出错了,icon: icon || success,duration: 2000});
}
// alert
function alert(msg, title, success) {uni.showModal({title: 温馨提示 || title,content: msg,showCancel: false,confirmColor: #000,success: success || {}})
}
//设置缓存
function setCache(key, value) {if (key ! null value ! null) {try {uni.setStorageSync(key, value);// console.log(设置缓存 key value);} catch (e) {console.log(e, 保存缓存失败)}}
}
//取出缓存
function getCache(key) {var obj null;if (key) {try {obj uni.getStorageSync(key);// console.log(取出缓存, obj)} catch (e) {console.log(e, 取出缓存失败)}}return obj;
}
//分享页面
function onShareAppMessage(title,url) {return {title: title || ,path: pages/home/home||url}
}
// 手机验证
function isMobile(mobile) {// 最新正则var myreg /^(13[0-9]|14[579]|15[0-3,5-9]|16[6]|17[0135678]|18[0-9]|19[89])\d{8}$/;return myreg.test(mobile);
}
// 身份证验证
function isId(isId) {var myreg /\d{17}[\d|x]|\d{15}/;return myreg.test(isId);
}
// 邮箱验证
function iseMail(iseMail) {var myreg /\w[-\w.]*([A-Za-z0-9][-A-Za-z0-9]\.)[A-Za-z]{2,14}/;return myreg.test(iseMail);
}
// QQ验证
function isQQ(isQQ) {var myreg /^[1-9]\d{4,9}$/;return myreg.test(isQQ);
}//补全时间两位数
function prefixZero(n, m) {var _a (Array(m).join(0) n).slice(-m)return _a}
module.exports {request: request,navigateTo: navigateTo,switchTab: switchTab,redirectTo:redirectTo,showToast: showToast,alert: alert,setCache: setCache,getCache: getCache,onShareAppMessage:onShareAppMessage,baseUrl:baseUrl,isMobile:isMobile,isId:isId,iseMail:iseMail,isQQ:isQQ,prefixZero:prefixZero
}这几年间公司加入专开发小程序的同事这里太忙了我也没有时间怎么去关注了后面发现他们具然所有的小程序项目都在用而且连引用的文件名都没有改如图 四 2023年后小程序项目基本开始外包查看了被外包修改后的代码发现还是变化不大。
use strict;//TestServer
//var baseUrl http://192.168.22.193:8888
//外网地址
var baseUrl https://xx.xx.xx.xx//线上// var baseUrl https://xx.xx.xx
//封包
function getPackage(data) {let data_str ;if (data) {data_str JSON.stringify(data);}let pack {language:1,isEncrypt: N,data: data_str}return pack;
}
//8d2df462-b665-4441-8ed5-f216c8babf53
function addImgFun(tempFilePaths,fun){for(var i0;itempFilePaths.length;i){uni.uploadFile({url:baseUrl/api/v1/file/uploadImgs, //仅为示例非真实的接口地址filePath: tempFilePaths[i],header:{Authorization: getCache(token)? getCache(token) : },name: files,success: (uploadFileRes) {console.log(JSON.parse(uploadFileRes.data).data[0]);fun(JSON.parse(uploadFileRes.data).data[0])}});}
}//xx测试账号
setCache(token,9d307453-f0b1-4f7f-9a8c-41c1f803de73);// setCache(token,cccf7a52-855b-42d8-b5cf-d48eb7f678c2);
// setCache(token,74bc8184-ac49-424f-9029-273cfcbfdd62);// setCache(token,fdd31cad-e9ce-4ad0-afc8-8c3ad42e0dc9);
function request(method, reqUrl, pack, fnSuccess,err) {// setCache(token,8d2df462-b665-4441-8ed5-f216c8babf53);// console.log(baseUrl reqUrl)if(!pack.noShowLoading){uni.showLoading({title: 加载中});delete pack.noShowLoading;}pack getPackage(pack);uni.request({method: method || POST,url: baseUrl reqUrl,data: pack,header: {Content-Type: application/x-www-form-urlencoded,Authorization: getCache(token)? getCache(token) : },success: function(result) {uni.hideLoading();let pack result;console.log(pack,JSON.stringify(pack))if(pack.data.code400){showToast(pack.data.msg);if(pack.data.failReason1||pack.data.failReason2||pack.data.failReason3){setCache(token,);setTimeout(function(){uni.navigateTo({url:/pages/home/home})},2000)}else if(pack.data.failReason26){setTimeout(function(){uni.reLaunch({url:../charge/charge})},2000)}else if(pack.data.failReason12){setTimeout(function(){uni.navigateTo({url:../order/order})},2000)}else if(pack.data.failReason13){setTimeout(function(){uni.navigateBack({delta:1})},2000)}if(err){err(pack);}return false;}else if (pack.data.codepack.data.code200fnSuccess) {if (fnSuccess.length 1) {fnSuccess.call(this, pack);} else if (fnSuccess.length 2) {fnSuccess.call(this, pack, pack.data.data);} else {fnSuccess.call();}}else{showToast(pack.data.msg);} // else {// showToast(操作成功);// }},fail: function(result) {uni.hideLoading();try {if (result.errMsg.indexOf(request:fail) ! -1) {// alert(似乎已断开与互联网的连接);} else {// alert(操作失败);}} catch (e) {// alert(操作失败);}}})
}function navigateTo(url) {uni.navigateTo({url: url});
}function switchTab(url) {uni.switchTab({url: url});
}function redirectTo(url) {uni.redirectTo({url: url});
}function showToast(title, icon) {uni.showToast({title: title || 出错了,icon: icon || none,mask:true,duration: 2000});
}
// alert
function alert(msg, title, success) {uni.showModal({title: 温馨提示 || title,content: msg,showCancel: false,confirmColor: #000,success: success || {}})
}
//设置缓存
function setCache(key, value) {if (key ! null value ! null) {try {uni.setStorageSync(key, value);// console.log(设置缓存 key value);} catch (e) {console.log(e, 保存缓存失败)}}
}
//取出缓存
function getCache(key) {var obj null;if (key) {try {obj uni.getStorageSync(key);// console.log(取出缓存, obj)} catch (e) {console.log(e, 取出缓存失败)}}return obj;
}
//分享页面
function onShareAppMessage(title,url) {return {title: title || ,path: pages/home/home||url}
}
// 手机验证
function isMobile(mobile) {// 最新正则var myreg /^(13[0-9]|14[579]|15[0-3,5-9]|16[6]|17[0135678]|18[0-9]|19[89])\d{8}$/;return myreg.test(mobile);
}
// 身份证验证
function isId(isId) {var myreg /\d{17}[\d|x]|\d{15}/;return myreg.test(isId);
}
// 邮箱验证
function iseMail(iseMail) {var myreg /\w[-\w.]*([A-Za-z0-9][-A-Za-z0-9]\.)[A-Za-z]{2,14}/;return myreg.test(iseMail);
}
// QQ验证
function isQQ(isQQ) {var myreg /^[1-9]\d{4,9}$/;return myreg.test(isQQ);
}//补全时间两位数
function prefixZero(n, m) {var _a (Array(m).join(0) n).slice(-m)return _a}//补全时间两位数
function login(fun) {if(getCache(token)){if(fun){fun();}}else{setCache(token,)uni.login({provider: weixin,success: function(loginRes) {var data {code: loginRes.code}request(POST, /api/v1/common/wxLogin, data, (res) {// if (res.data.ret_code 200) {setCache(token, res.data.data.token)setCache(memberId,res.data.data.user.id)if(res.data.data.user.plateNo){setCache(memberPlateNo,res.data.data.user.plateNo);}if(fun){fun();}// } else {// comm.showToast(res.data.ret_msg, none)// }})}})}
}
module.exports {request: request,navigateTo: navigateTo,switchTab: switchTab,redirectTo:redirectTo,showToast: showToast,alert: alert,setCache: setCache,getCache: getCache,onShareAppMessage:onShareAppMessage,baseUrl:baseUrl,isMobile:isMobile,isId:isId,iseMail:iseMail,isQQ:isQQ,prefixZero:prefixZero,addImgFun:addImgFun,login:login,
}小程序引入调用部分 import comm from ../../static/data/commFunc.js//方法区let that thisuni.showLoading({title:加载中})//参数var data {current: that.current}//调用comm.request(POST,/app/v200801/member/order/list,data,(res) {console.log(res,res)that.data res.data.data.recordsthat.list that.list.concat(res.data.data.records)that.total res.data.data.totaluni.hideLoading()})