js统一公共请求处理与常用工具封装

         一个完整的前端项目往往会进行一些必要的抽取公用代码进行封装,这里记录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+, SafarixmlHttp=new XMLHttpRequest();}catch (e){// Internet Explorertry{xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");}catch (e){try{xmlHttp=new 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.onreadystatechange=function state_Change() {if (xmlhttp.readyState==4){// 4 = "loaded"if (xmlhttp.status==200) {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,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");if(arr=document.cookie.match(reg))return unescape(arr[2]);elsereturn null;},delCookie:function (name){var exp = new Date();exp.setTime(exp.getTime() - 1);var cval=getCookie(name);if(cval!=null)document.cookie= name + "="+cval+";expires="+exp.toGMTString();}
}/**按钮等待进度   使用方法: jxProcess.run(butid, txtid, 1,30,'已发送成功(_sec_)')    说明:butid 和 txtid 为Input元素对象ID,1 代表每隔几秒刷新次数, 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  $elemTxt=jxProcess.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.dyTimeLabel=dyTimeLabel||'请耐心等待_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.t=undefined;}}}

二  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_str=JSON.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.getOpenIdUrl+'&js_code=' + code + '&grant_type=authorization_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': 'loginToken='+getLoginToken()},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.resultCode==200){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 reqUrl=cfg.config.jx_url+api;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 token=getLoginToken();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 i=0;i<tempFilePaths.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.code==400){showToast(pack.data.msg);if(pack.data.failReason==1||pack.data.failReason==2||pack.data.failReason==3){setCache("token","");setTimeout(function(){uni.navigateTo({url:"/pages/home/home"})},2000)}else if(pack.data.failReason==26){setTimeout(function(){uni.reLaunch({url:"../charge/charge"})},2000)}else if(pack.data.failReason==12){setTimeout(function(){uni.navigateTo({url:"../order/order"})},2000)}else if(pack.data.failReason==13){setTimeout(function(){uni.navigateBack({delta:1})},2000)}if(err){err(pack);}return false;}else if (pack.data.code&&pack.data.code==200&&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(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()})

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/596856.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu上使用node搭建本地静态http服务器

1.搭建步骤 1.安装Node.js。首先确保你的Ubuntu系统已经安装了Node.js。如果没有安装&#xff0c;可以通过以下命令进行安装&#xff1a; sudo apt-get update sudo apt-get install nodejs #安装nodejs 2.安装npm。npm是Node.js的包管理器&#xff0c;一般会随着Node.js一…

[python]项目中导入外部包

导入外部包是在Python项目中使用外部库或模块。以下是一些导入外部包的常见方法&#xff1a; 使用import语句导入整个外部包&#xff1a; import package_name例如&#xff0c;导入numpy包&#xff1a; import numpy使用import语句给导入的外部包指定别名&#xff1a; impo…

SQL优化:条件提升

前面我们讲解了下分区表,分区表能提升性能,核心原理在于减少了需要加载的数据量。 我们所有的优化思路,基本都出自两个基本点: 以空间换时间;缩小需要处理的数据量。使用索引、物化视图是以空间换时间的典例,分区表,则是缩小需要处理的数据量的典例。 今天我们讲的条件…

Minio部署在服务器上,分享图片等文件提示,签名不对

问题描述: 上传没问题 下载没问题 就是分享有问题,签名有问题 找了很多解释,什么nginx代理问题啊,什么端口问题啊 什么防火墙问题啊 都是扯淡,一点用没有 最后发现,我的分享链接是127.0.0.1的地址,并不是我的服务器本机的地址 我访问图片都是要把ip改了再去访问,但是一开始并没…

HttpSession的使用

1 HttpSession 概述 在 Java Servlet API 中引入 session 机制来跟踪客户的状态。session 指的是在一段时间内&#xff0c;单个客户与 Web 服务器的一连串相关的交互过程。在一个 session 中&#xff0c;客户可能会多次请求访问同一个网页&#xff0c;也有可能请求访问各种不同…

【JavaSE】P1~P32 进制,字节,Java代码规范,常量,变量,运算符

目录 IDEA常用快键键和快捷用法一、需要复习的重难点概念1 进制、字节、DOS操作命令语句进制及转化字节DOS系统命令提示符 2 Java 常用代码规范3 常量及常量的打印4 变量数据类型及取值范围变量的概念和使用数据类型转换ASCII码表&#xff08;128种&#xff09;基本数据类型极其…

显示所有中国城市需要多少个汉字?

显示所有中国城市需要多少个汉字呢&#xff1f; 需要3678个汉字&#xff0c;看看我怎么知道的。 第一步&#xff1a;先找到中国的所有城市的名称 去哪里找到中国的所有城市的名称呢&#xff1f; 进入中国天气网&#xff1a;http://www.weather.com.cn/ 使用 F12 打开浏览器的调…

记 -bash: docker-compose: command not found 的问题解决

docker-compose: command not found 错误表明系统无法找到 docker-compose 命令。这可能是因为 docker-compose 并未正确安装&#xff0c;或者其可执行文件的路径未包含在系统的 PATH 变量中。 以下是我遇到时解决方法&#xff1a; 确保 Docker 和 Docker Compose 已安装&…

Excelize 入选“2023开源创新榜”优秀开源项目

近日&#xff0c;由中国科协科学技术传播中心、中国计算机学会、中国通信学会、中国科学院软件研究所共同主办&#xff0c;CSDN 承办的 2023 开源创新榜专家评审会在国家科技传播中心成功举办。Excelize 电子表格文档开源基础库入选“2023开源创新榜”优秀开源项目。 评审委员…

#CCSP学习心得总结:2023年新收获CCSP云安全认证

源自&#xff1a;张同学 选择CCSP的原因 选择学习CCSP的原因比较简单&#xff0c;公司这几年开始发力布局云原生和云安全的业务&#xff0c;作为云安全相关知识领域的补充渠道&#xff0c;我对比了CCSP和CCSK&#xff0c;最终选择了综合性较高的CCSP。由于我之前已经拿下了CIS…

【MCAL】AUTOSAR架构下PWM模块配置实践

目录 前言 1.MCAL简介 2. PWM模块详解 2.1 PWM模块概念介绍 2.2 PWM依赖的模块 2.3 PWM频率<

SwiftUI 打造一款可收缩的 HStack(二):对齐+ZStack

概览 在上篇 SwiftUI 打造一款可收缩的 HStack(一):“原汤化原食” 博文里,我们讨论了如何用 HStack 自身来实现可收缩的“HStack”。 而在本篇中,我们将尝试利用 SwiftUI 对齐 + ZStack 的方式完成相同的功能。 在本篇博文中,您将学到以下内容: 概览1. SwiftUI 中的对…

商业综合体能源管理系统功能有哪些?能够为企业带来哪些价值?

随着IT行业的迅猛发展&#xff0c;仅仅实现智能控制已无法满足当前绿色低碳发展的要求&#xff0c;随着智能设备的增多&#xff0c;同时也产生了越来越多的信息孤岛。通过信息技术构建能源管理系统&#xff0c;可以实现先进、智能、经济、可行的商业综合体能源管理解决方案。 …

静态网页设计——校园官网(HTML+CSS+JavaScript)

前言 声明&#xff1a;该文章只是做技术分享&#xff0c;若侵权请联系我删除。&#xff01;&#xff01; 使用技术&#xff1a;HTMLCSSJS 主要内容&#xff1a;对学校官网的结构进行模仿&#xff0c;对布局进行模仿。 主要内容 1、首页 首页以多个div对页面进行分割和布局…

解析为什么Go语言要使用[]rune而不是string来表示中文字符

众所周知&#xff0c;Go语言中有以下这些数据类型。但rune32这个go语言特有的数据类型&#xff0c;比较有意思却经常遭到忽视。所以今天探索学习一下这个数据类型的功能、用法。 Go基本数据类型 布尔&#xff1a;bool 字符串&#xff1a;string 整数&#xff1a; int int8 …

GitHub项目推荐:IDE-3D

项目地址 GitHub - MrTornado24/IDE-3D: [SIGGRAPH Asia 2022] IDE-3D: Interactive Disentangled Editing For High-Resolution 3D-aware Portrait Synthesisx 项目简述 这是一个交互式的3D画图工具。无论是改图还是成图&#xff0c;都能使用。是一个很有意思的项目。 项目…

12.3 【Screen配置】配置winmgr(一)更新中

一&#xff0c;winmgr配置简介 winmgr 部分用于指定与Screen相关的参数。 graphics.conf 配置文件必须包含一个 winmgr 部分&#xff0c;在其中指定global, display,和class参数。 winmgr 部分被标识为由 begin winmgr 和 end winmgr 包围的配置文件部分。 ... begin winmg…

c++ 基础 笔记

1 外部访问就是 实例类后 访问类中变量 class MyClass { public:int publicVar; // 公有变量 protected:int protectedVar; // 受保护变量 private:int privateVar; // 私有变量 };MyClass obj; obj.publicVar 1; // 正确: 公有变量可以在类外部直接访问 obj.protectedVar 2…

安卓和Android是两种不同的操作系统?

实际上&#xff0c;安卓和Android并不是同一种操作系统&#xff01; Android是由Google开发并维护更新的一款操作系统&#xff0c;目前仅能运行在Pixel手机上。 Google Pixel 与 iPhone手机&#xff1a;哪个更好&#xff1f;Google Pixel 与 Apple iPhone哪个手机才是性价比最…

(1)(1.13) SiK无线电高级配置(一)

文章目录 前言 1 监控链接质量 2 诊断范围问题 3 MAVLink协议说明 前言 本文提供 SiK 遥测无线电(SiK Telemetry Radio)的高级配置信息。它面向"高级用户"和希望更好地了解无线电如何运行的用户。 &#xff01;Tip 大多数用户只需要 SiK Radio v2 中提供的基本…