这些合集每一个都短小精湛,但是每一个都非常实用,小伙伴们可以直接登录作者的网站进行需要代码片段的搜索,也可以逐个根据开源的内容进行学习提升。
以addWeekDays为例,就是我们比较常用的计算工作日,文中会简单的介绍主要使用的方法及理论。
然后会将示例代码及如何使用展示给大家:
const addWeekDays = (startDate, count) =>
Array.from({ length: count }).reduce(date => {
date = new Date(date.setDate(date.getDate() + 1));
if (date.getDay() % 6 === 0)
date = new Date(date.setDate(date.getDate() + (date.getDay() / 6 + 1)));
return date;
}, startDate);
addWeekDays(new Date('Oct 09, 2020'), 5); // 'Oct 16, 2020'
addWeekDays(new Date('Oct 12, 2020'), 5); // 'Oct 19, 2020'
求繁简转换的js代码,可以设置打开网站时候整站默认显示繁体或简体,然后可以手动切换繁简。
<!DOCTYPE?html><html?lang="en">
<head>
<meta?charset="UTF-8">
<title>Document</title>
<script?src="JQ/jquery1.42.min.js"></script>
<script?src="JQ/jquery.SuperSlide.2.1.1.js"></script>
</head>
<body>
<a?href="javascript:zh_tran('s');"?class="zh_click"?id="zh_click_s">简体中文</a>?|?<a?href="javascript:zh_tran('t');"?class="zh_click"?id="zh_click_t">繁体中文</a>
<p>秋风缠,落花残,庭前路人几声叹。夜挑灯,纱窗舞,空笑丹唇离人扰。红尘客,何人箫声惊归鸟。月上枝,醉几分,行者路难,静者心安,研墨丹青鬓白处。年少狂,孤杯蘸,戎马一生终化三寸土。--缘风</p>
<p>浓墨入水,浸一池青花?。顿足庭下,拾一片落花,染指正茂风华。浅秋归至,斜阳映栖霞,满山落枫如画。风之悠悠,撩罗裙轻纱。谁人篱下,空弹琵琶,埋一世情话。倦鸟归巢,三生羽化,悟满相思入榻。浅溪潺潺,莹草离离,故人凄凄,晚风过青袍起。三十里江南,游人自泣。</p>
<p>青鸟飞,歌声微,飞入人家几时回?风烟处,谁独舞,茜纱霓裳扫露珠。一眼山水,一梦江湖,三千繁华终落尘土,来时空空去时无。</p>
<script>
//?--------------?以下参数大部分可以更改?--------------------
//s?=?simplified?简体中文?t?=?traditional?繁体中文?n?=?normal?正常显示
var?zh_default?=?'n';?//默认语言,请不要改变
var?zh_choose?=?'t';?//当前选择
var?zh_expires?=?7;?//cookie过期天数
var?zh_class?=?'zh_click';?//链接的class名,id为class?+?s/t/n?之一
var?zh_style_active?=?'font-weight:bold;?color:red;';?//当前选择的链接式样
var?zh_style_inactive?=?'';?//非当前选择的链接式样
var?zh_browserLang?=?'';?//浏览器语言
var?zh_autoLang_t?=?true;?//浏览器语言为繁体时自动进行操作
var?zh_autoLang_s?=?false;?//浏览器语言为简体时自动进行操作
var?zh_autoLang_alert?=?false;?//自动操作后是否显示提示消息
//自动操作后的提示消息
var?zh_autoLang_msg?=?'欢迎来到本站,本站为方便台湾香港的用户\n1.采用UTF-8国际编码,用任何语言发帖都不用转码.\n2.自动判断繁体用户,显示繁体网页\n3.在网页最上方有语言选择,如果浏览有问题时可以切换\n4.本消息在cookie有效期内只显示一次';
var?zh_autoLang_checked?=?0;?//次检测浏览器次数,第一次写cookie为1,提示后为2,今后将不再提示
//判断浏览器语言的正则,ie为小写,ff为大写
var?zh_langReg_t?=?/^zh-tw|zh-hk$/i;
var?zh_langReg_s?=?/^zh-cn$/i;
//简体繁体对照字表,可以自行替换
var?zh_s?=?'皑蔼碍爱翱袄奥坝罢摆败颁办绊帮绑镑谤剥饱宝报鲍辈贝钡狈备惫绷笔毕毙闭边编贬变辩辫鳖瘪濒滨宾摈饼拨钵铂驳卜补参蚕残惭惨灿苍舱仓沧厕侧册测层诧搀掺蝉馋谗缠铲产阐颤场尝长偿肠厂畅钞车彻尘陈衬撑称惩诚骋痴迟驰耻齿炽冲虫宠畴踌筹绸丑橱厨锄雏础储触处传疮闯创锤纯绰辞词赐聪葱囱从丛凑窜错达带贷担单郸掸胆惮诞弹当挡党荡档捣岛祷导盗灯邓敌涤递缔点垫电淀钓调迭谍叠钉顶锭订东动栋冻斗犊独读赌镀锻断缎兑队对吨顿钝夺鹅额讹恶饿儿尔饵贰发罚阀珐矾钒烦范贩饭访纺飞废费纷坟奋愤粪丰枫锋风疯冯缝讽凤肤辐抚辅赋复负讣妇缚该钙盖干赶秆赣冈刚钢纲岗皋镐搁鸽阁铬个给龚宫巩贡钩沟构购够蛊顾剐关观馆惯贯广规硅归龟闺轨诡柜贵刽辊滚锅国过骇韩汉阂鹤贺横轰鸿红后壶护沪户哗华画划话怀坏欢环还缓换唤痪焕涣黄谎挥辉毁贿秽会烩汇讳诲绘荤浑伙获货祸击机积饥讥鸡绩缉极辑级挤几蓟剂济计记际继纪夹荚颊贾钾价驾歼监坚笺间艰缄茧检碱硷拣捡简俭减荐槛鉴践贱见键舰剑饯渐溅涧浆蒋桨奖讲酱胶浇骄娇搅铰矫侥脚饺缴绞轿较秸阶节茎惊经颈静镜径痉竞净纠厩旧驹举据锯惧剧鹃绢杰洁结诫届紧锦仅谨进晋烬尽劲荆觉决诀绝钧军骏开凯颗壳课垦恳抠库裤夸块侩宽矿旷况亏岿窥馈溃扩阔蜡腊莱来赖蓝栏拦篮阑兰澜谰揽览懒缆烂滥捞劳涝乐镭垒类泪篱离里鲤礼丽厉励砾历沥隶俩联莲连镰怜涟帘敛脸链恋炼练粮凉两辆谅疗辽镣猎临邻鳞凛赁龄铃凌灵岭领馏刘龙聋咙笼垄拢陇楼娄搂篓芦卢颅庐炉掳卤虏鲁赂禄录陆驴吕铝侣屡缕虑滤绿峦挛孪滦乱抡轮伦仑沦纶论萝罗逻锣箩骡骆络妈玛码蚂马骂吗买麦卖迈脉瞒馒蛮满谩猫锚铆贸么霉没镁门闷们锰梦谜弥觅绵缅庙灭悯闽鸣铭谬谋亩钠纳难挠脑恼闹馁腻撵捻酿鸟聂啮镊镍柠狞宁拧泞钮纽脓浓农疟诺欧鸥殴呕沤盘庞国爱赔喷鹏骗飘频贫苹凭评泼颇扑铺朴谱脐齐骑岂启气弃讫牵扦钎铅迁签谦钱钳潜浅谴堑枪呛墙蔷强抢锹桥乔侨翘窍窃钦亲轻氢倾顷请庆琼穷趋区躯驱龋颧权劝却鹊让饶扰绕热韧认纫荣绒软锐闰润洒萨鳃赛伞丧骚扫涩杀纱筛晒闪陕赡缮伤赏烧绍赊摄慑设绅审婶肾渗声绳胜圣师狮湿诗尸时蚀实识驶势释饰视试寿兽枢输书赎属术树竖数帅双谁税顺说硕烁丝饲耸怂颂讼诵擞苏诉肃虽绥岁孙损笋缩琐锁獭挞抬摊贪瘫滩坛谭谈叹汤烫涛绦腾誊锑题体屉条贴铁厅听烃铜统头图涂团颓蜕脱鸵驮驼椭洼袜弯湾顽万网韦违围为潍维苇伟伪纬谓卫温闻纹稳问瓮挝蜗涡窝呜钨乌诬无芜吴坞雾务误锡牺袭习铣戏细虾辖峡侠狭厦锨鲜纤咸贤衔闲显险现献县馅羡宪线厢镶乡详响项萧销晓啸蝎协挟携胁谐写泻谢锌衅兴汹锈绣虚嘘须许绪续轩悬选癣绚学勋询寻驯训讯逊压鸦鸭哑亚讶阉烟盐严颜阎艳厌砚彦谚验鸯杨扬疡阳痒养样瑶摇尧遥窑谣药爷页业叶医铱颐遗仪彝蚁艺亿忆义诣议谊译异绎荫阴银饮樱婴鹰应缨莹萤营荧蝇颖哟拥佣痈踊咏涌优忧邮铀犹游诱舆鱼渔娱与屿语吁御狱誉预驭鸳渊辕园员圆缘远愿约跃钥岳粤悦阅云郧匀陨运蕴酝晕韵杂灾载攒暂赞赃脏凿枣灶责择则泽贼赠扎札轧铡闸诈斋债毡盏斩辗崭栈战绽张涨帐账胀赵蛰辙锗这贞针侦诊镇阵挣睁狰帧郑证织职执纸挚掷帜质钟终种肿众诌轴皱昼骤猪诸诛烛瞩嘱贮铸筑驻专砖转赚桩庄装妆壮状锥赘坠缀谆浊兹资渍踪综总纵邹诅组钻致钟么为只凶准启板里雳余链泄';
var?zh_t?=?'皑蔼碍爱翺袄奥坝罢摆败颁办绊帮绑镑谤剥饱宝报鲍辈贝钡狈备惫绷笔毕毙闭边编贬变辩辫鼈瘪濒滨宾摈饼拨钵铂驳卜补参蚕残惭惨灿苍舱仓沧厕侧册测层诧搀掺蝉馋谗缠铲产阐颤场尝长偿肠厂畅钞车彻尘陈衬撑称惩诚骋痴迟驰耻齿炽冲虫宠畴踌筹绸丑橱厨锄雏础储触处传疮闯创锤纯绰辞词赐聪葱囱从丛凑窜错达带贷担单郸掸胆惮诞弹当挡党荡档捣岛祷导盗灯邓敌涤递缔点垫电淀钓调叠谍叠钉顶锭订东动栋冻斗犊独读赌镀锻断缎兑队对吨顿钝夺鹅额讹恶饿儿尔饵贰发罚阀珐矾钒烦范贩饭访纺飞废费纷坟奋愤粪丰枫锋风疯冯缝讽凤肤辐抚辅赋复负讣妇缚该钙盖干赶秆赣冈刚钢纲岗臯镐搁鸽阁铬个给龚宫巩贡钩沟构购够蛊顾剐关观馆惯贯广规矽归龟闺轨诡柜贵刽辊滚锅国过骇韩汉阂鹤贺横轰鸿红後壶护沪户哗华画划话怀坏欢环还缓换唤痪焕涣黄谎挥辉毁贿秽会烩汇讳诲绘荤浑夥获货祸击机积饥讥鸡绩缉极辑级挤几蓟剂济计记际继纪夹荚颊贾钾价驾歼监坚笺间艰缄茧检堿碱拣捡简俭减荐槛鉴践贱见键舰剑饯渐溅涧浆蒋桨奖讲酱胶浇骄娇搅铰矫侥脚饺缴绞轿较稭阶节茎惊经颈静镜径痉竞净纠厩旧驹举据锯惧剧鹃绢杰洁结诫届紧锦仅谨进晋烬尽劲荆觉决诀绝钧军骏开凯颗壳课垦恳抠库裤夸块侩宽矿旷况亏岿窥馈溃扩阔蜡腊莱来赖蓝栏拦篮阑兰澜讕揽览懒缆烂滥捞劳涝乐镭垒类泪篱离裏鲤礼丽厉励砾历沥隶俩联莲连镰怜涟帘敛脸链恋炼练粮凉两辆谅疗辽镣猎临邻鳞凛赁龄铃淩灵岭领馏刘龙聋咙笼垄拢陇楼娄搂篓芦卢颅庐炉掳卤虏鲁赂禄录陆驴吕铝侣屡缕虑滤绿峦挛孪滦乱抡轮伦仑沦纶论萝罗逻锣箩骡骆络妈玛码蚂马骂吗买麦卖迈脉瞒馒蛮满谩猫锚铆贸麽黴没镁门闷们锰梦谜弥觅绵缅庙灭悯闽鸣铭谬谋亩钠纳难挠脑恼闹馁腻撵捻酿鸟聂齧镊镍柠狞甯拧泞钮纽脓浓农疟诺欧鸥殴呕沤盤庞国爱赔喷鹏骗飘频贫苹凭评泼颇扑铺朴谱脐齐骑岂启气弃讫牵扡釺铅迁签谦钱钳潜浅谴堑枪呛墙蔷强抢锹桥乔侨翘窍窃钦亲轻氢倾顷请庆琼穷趋区躯驱龋顴权劝却鹊让饶扰绕热韧认纫荣绒软锐闰润洒萨鳃赛伞丧骚扫涩杀纱筛晒闪陕赡缮伤赏烧绍赊摄慑设绅审婶肾渗声绳胜圣师狮湿诗屍时蚀实识驶势释饰视试寿兽枢输书赎属术树竖数帅双谁税顺说硕烁丝饲耸怂颂讼诵擞蘇诉肃虽绥岁孙损笋缩琐锁獭挞擡摊贪瘫滩坛谭谈叹汤烫涛绦腾誊锑题体屉条贴铁厅听烃铜统头图涂团颓蜕脱鸵驮驼椭洼袜弯湾顽万网韦违围为潍维苇伟伪纬谓卫温闻纹稳问甕挝蜗涡窝呜钨乌诬无芜吴坞雾务误锡牺袭习铣戏细虾辖峡侠狭厦鍁鲜纤咸贤衔闲显险现献县馅羡宪线厢镶乡详响项萧销晓啸蝎协挟携胁谐写泻谢锌衅兴汹锈绣虚嘘须许绪续轩悬选癣绚学勋询寻驯训讯逊压鸦鸭哑亚讶阉烟盐严颜阎豔厌砚彦谚验鸯杨扬疡阳痒养样瑶摇尧遥窑谣药爷页业叶医铱颐遗仪彜蚁艺亿忆义诣议谊译异绎荫阴银饮樱婴鹰应缨莹萤营荧蝇颖哟拥佣癰踊咏涌优忧邮铀犹游诱舆鱼渔娱与屿语吁御狱誉预驭鸳渊辕园员圆缘远愿约跃钥岳粤悦阅云郧匀陨运蕴酝晕韵杂灾载攒暂赞赃脏凿枣灶责择则泽贼赠扎札轧铡闸诈斋债毡盏斩辗崭栈战绽张涨帐账胀赵蛰辙锗这贞针侦诊镇阵挣睁狰帧郑证织职执纸挚掷帜质锺终种肿众诌轴皱昼骤猪诸诛烛瞩嘱贮铸筑驻专砖转赚桩庄装妆壮状锥赘坠缀谆浊兹资渍踪综总纵邹诅组钻致钟麼为只凶准启板里雳馀鍊洩';
String.prototype.tran=function(){
var?s1,s2;
if(zh_choose=='t'){
?s1?=?zh_s;
?s2?=?zh_t;
}else?if(zh_choose=='s'){
?s1?=?zh_t;
?s2?=?zh_s;
}else{
?return?this;
}
var?a?=?'';
var?l?=?this.length;
for(var?i=0;i<this.length;i++){
var?c?=?this.charAt(i);
var?p?=?s1.indexOf(c);
a?+=?p?<?0?c?:?s2.charAt(p);
}
return?a;
}
function?setCookie(name,?value){
var?argv?=?setCookie.arguments;
var?argc?=?setCookie.arguments.length;
var?expires?=?(argc?>?2)?argv[2]?:?null;
if(expires?!=?null){
?var?LargeExpDate?=?new?Date?();
?LargeExpDate.setTime(LargeExpDate.getTime()?+?(expires*1000*3600*24));
}
document.cookie?=?name?+?"="?+?escape?(value)+((expires?==?null)?""?:?(";?expires="?+LargeExpDate.toGMTString()));
}
function?getCookie(Name){
var?search?=?Name?+?"=";
if(document.cookie.length?>?0){
offset?=?document.cookie.indexOf(search);
if(offset?!=?-1){
offset?+=?search.length;
end?=?document.cookie.indexOf(";",?offset);
if(end?==?-1){
end?=?document.cookie.length;
}
return?unescape(document.cookie.substring(offset,?end));
}else{
return?'';
}
}
}
function?zh_tranBody(obj){
var?o?=?(typeof(obj)?==?"object")?obj.childNodes?:?document.body.childNodes;
for?(var?i?=?0;?i?<?o.length;?i++){
var?c?=?o.item(i);
if('||BR|HR|TEXTAREA|SCRIPT|'.indexOf("|"+c.tagName+"|")?>?0)?continue;
if(c.className?==?zh_class){
if(c.id?==?zh_class?+?'_'?+?zh_choose){
c.setAttribute('style',?zh_style_active);
c.style.cssText?=?zh_style_active;
}else{
c.setAttribute('style',?zh_style_inactive);
c.style.cssText?=?zh_style_inactive;
}
continue;?
}
if(c.title?!=?''?&&?c.title?!=?null){
c.title?=?c.title.tran();
}
if(c.alt?!=?''?&&?c.alt?!=?null){
c.alt?=?c.alt.tran();
}
if(c.tagName?==?"INPUT"?&&?c.value?!=?''?&&?c.type?!=?'text'?&&?c.type?!=?'hidden'?&&?c.type?!=?'password'){
c.value?=?c.value.tran();
}
if(c.nodeType?==?3){
c.data?=?c.data.tran();
}else{
zh_tranBody(c);
}
}
}
function?zh_tran(go){
if(go)?zh_choose?=?go;
setCookie('zh_choose',?zh_choose,?zh_expires);
if(go?==?'n'){
?window.location.reload();
}else?{
?zh_tranBody();
}
}
function?zh_getLang(){
if(getCookie('zh_choose')){
?zh_choose?=?getCookie('zh_choose');
?return?true;
}
if(!zh_autoLang_t?&&?!zh_autoLang_s){
return?false;
}
if(getCookie('zh_autoLang_checked')){
return?false;
}
if(navigator.language){
zh_browserLang?=?navigator.language;
}else?if(navigator.browserLanguage){
zh_browserLang?=?navigator.browserLanguage;
}
if(zh_autoLang_t?&&?zh_langReg_t.test(zh_browserLang)){
zh_choose?=?'t';
}else?if(zh_autoLang_s?&&?zh_langReg_s.test(zh_browserLang)){
zh_choose?=?'s';
}
zh_autoLang_checked?=?1;
setCookie('zh_choose',?zh_choose,?zh_expires);
if(zh_choose?==?zh_default){
return?false;
}
return?true;
}
function?zh_init(){
zh_getLang();
c?=?document.getElementById(zh_class?+?'_'?+?zh_choose);
if(zh_choose?!=?zh_default){
if(window.onload){
window.onload_before_zh_init?=?window.onload;
window.onload?=?function(){
zh_tran(zh_choose);
if(zh_autoLang_alert){
alert(zh_autoLang_msg);
};
window.onload_before_zh_init();
};
}else{
window.onload?=?function(){
zh_tran(zh_choose);
if(zh_autoLang_alert){
alert(zh_autoLang_msg);
};
};
}
}
}
zh_init();
</script>
</body>
</html>
如何使用Node.js处理前端代码文件的编码问题
使用 NodeJS 编写前端工具时,操作得最多的是文本文件,因此也就涉及到了文件编码的处理问题。我们常用的文本编码有 UTF8 和 GBK 两种,并且 UTF8 文件还可能带有 BOM。在读取不同编码的文本文件时,需要将文件内容转换为 JS 使用的 UTF8 编码字符串后才能正常处理。
1、BOM 的移除
BOM 用于标记一个文本文件使用 Unicode 编码,其本身是一个 Unicode 字符("uFEFF"),位于文本文件头部。在不同的 Unicode 编码下,BOM 字符对应的二进制字节如下:
因此,我们可以根据文本文件头几个字节等于啥来判断文件是否包含 BOM,以及使用哪种 Unicode 编码。但是,BOM 字符虽然起到了标记文件编码的作用,其本身却不属于文件内容的一部分,如果读取文本文件时不去掉 BOM,在某些使用场景下就会有问题。例如我们把几个 JS 文件合并成一个文件后,如果文件中间含有 BOM 字符,就会导致浏览器 JS 语法错误。因此,使用 NodeJS 读取文本文件时,一般需要去掉 BOM。例如,以下代码实现了识别和去除 UTF8 BOM 的功能.
2、GBK 转 UTF8
NodeJS 支持在读取文本文件时,或者在 Buffer 转换为字符串时指定文本编码,但遗憾的是,GBK 编码不在NodeJS自身支持范围内。因此,一般我们借助 iconv-lite 这个三方包来转换编码。使用 NPM 下载该包后,我们可以按下边方式编写一个读取 GBK 文本文件的函数。
3、单字节编码
有时候,我们无法预知需要读取的文件采用哪种编码,因此也就无法指定正确的编码。比如我们要处理的某些 CSS 文件中,有的用 GBK 编码,有的用 UTF8 编码。虽然可以一定程度可以根据文件的字节内容猜测出文本编码,但这里要介绍的是有些局限,但是要简单得多的一种技术。
首先我们知道,如果一个文本文件只包含英文字符,比如 Hello World,那无论用 GBK 编码或是 UTF8 编码读取这个文件都是没问题的。这是因为在这些编码下,ASCII0~128 范围内字符都使用相同的单字节编码。
反过来讲,即使一个文本文件中有中文等字符,如果我们需要处理的字符仅在 ASCII0~128 范围内,比如除了注释和字符串以外的JS代码,我们就可以统一使用单字节编码来读取文件,不用关心文件的实际编码是 GBK 还是 UTF8。
如何编写高质量JS代码
1、避免全局变量,因为全局变量容易发生名称上的冲突,可维护性不好。a,使用命名空间
b,使用闭包
c,在函数内部使用var声明
2、编写可维护的代码
a.可读性
b.连续性
c.预见性
d.看起来是一个人写的
e.有文档
3、不要扩展内建的原型
扩展原型的构造函数,可以提供一些很强大的功能,但是有时候他太强大了。
有时候你会去扩展Object(),Array(),Fucntion()的原型方法,这样会导致可维护性的问题,因为这会让你的代码的移植性变差。其他的开发人员使用你的代码的时候,可能只需要原生的方法,并不需要额外的功能。
另外,你添加进去的方法,如果在循环的时候没有使用hasOwnProperty方法就会被遍历出来,这会让人很迷惑。
所以,最好还是不要扩展基本的对象。除非是下面的情况:
a.你确定在将来根据ECMAScript规范,浏览器会添加相应的原型方法,那么是可以的,你只不过是提前实现了这个功能。
b.你确定的你要实现的方法不存在–或许有时候在代码的其他的地方实现了,或者有的浏览器支持,这都是不行的。
c.有非常清晰的文档,并且与团队成员沟通过
4、避免隐藏的类型转换
Javascript在你比较两个变量的时候会进行类型的转换,这就是为什么 false == 0或者”" == 0会返回true。
为了避免这种隐藏的类型转换带来的迷惑,最好使用===或者!==操作符来比较:
5、避免使用eval()
如果在你的代码中使用eval(),那么要记住”eval() is evil”。这个方法会将传入的字符串当做js代码来执行。如果代码是在运行前就确定的,那么没有必要使用eval()。如果代码是在运行时动态确定的,那么也有其他更安全的办法。例如使用方括号形式访问元素的属性:
// antipattern
var property = "name";
alert(eval("obj." + property));
// preferred
var property = "name";
alert(obj[property]);
使用eval()还有安全问题,比如运行网络上的一段代码,而这段代码又被别人篡改了。在处理Ajax请求返回的JSON数据的时候,最好还是使用浏览器内建的处理方法,如果对于低端的浏览器不支持的,可以从JSON.org上下载对应的处理库。
6、使用parseInt()转换处理数字
使用parseInt()你可以将字符串转为数字。这个方法支持第二个表示进制的参数,常常被忽略。问题常常在处理一段以0开始的字符串的时候。在ECMAS3标准中,以0开始表示八进制,但是在ES5中又改了,所以为了避免麻烦,最好还是标明第二个参数。
7、编码规范
编码的时候遵循一定的规范,可以让代码增强可移植性,并且更加便于阅读和理解。加入团队的新人,在阅读了代码规范之后,可以更加快速的溶入团队,并理解其他人员开发的代码。
8、缩进
代码如果没有缩进,那基本上没法阅读了。比这更糟的是不规范的缩进,看着好像缩进了,但是乱七八糟摸不着头脑。所以缩进的使用必须规范。团队遵循统一的规范
9、大括号
应该使用大括号,尤其在那些可用可不用的地方,如果你的if语句或者for循环只有一句话,那么大括号不是必须的,但是这种时候最好用大括号。这可以让代码保持一致,并且便于升级。
10、命名规范
可以提高代码移植性和可维护性的一个方面是命名规范。也就是说,在取变量名的时候总是采取一贯的做法。
11、写注释
必须给代码写注释,就算它看起来不会被别人接手。有时候,研究完一个问题,然后你看着代码觉得那是显而易见的,但是过一两周之后回头再看,你也会摸不着头脑的。
js,nodejs如何判断文件是什么编码格式
nodejs编码只支持utf8的编码方式,无论是打开某个文件或者写.js脚本都得以utf8的编码方式保存,不然程序无法运行,读出来的文件是乱码。如果是在前台,读取文件是通过FileReader或者FileReaderSync这两个webAPI和input[type='file']标签来配合来完成,但是这个两个API已经包涵了判断文件的编码方式的功能,无论是GBK还是utf8编码的文件都能正确打开不出现乱码,但是nodejs就会出现这样的问题,读取gbk和unicode编码的文件出现奇怪的乱码,有一个模块iconv-lite可以解决编码问题,但是前提是你得知道这个文件的编码方式,举个例子:
有一个gkb的文件叫gbk.txt正确查看它的方式如下:
var icon=require('iconv-lite');
var fs=require('fs')
fs.readFile('gbk.txt',function(err,buffer){
var str=iconv.decode(buffer,'gbk')
console.log(str)//得到无乱码的内容
})
但是如果不知道文件的编码方式,那有该怎么办呢?
那就来聊一聊编码方式,首先UNICODE编码,UNICODE编码的文件无论内容是什么,前两个字节要不是FF FE 或者 FE FF,
utf-8头两个字节是EF BB,至于gbk吧,目前我没找到判断方法,只能粗略的判断如果不是unicode和utf8就认为是GBK,
代码如下:
var fs=require('fs')
fs.readFile('code.txt',function(err,buffer){
if(buffer[0]==0xff&&buffer[1]==0xfe){
console.log('unicode')
}else if(buffer[0]==0xfe&&buffer[1]==0xff){
console.log('unicode')
}else if(buffer[0]==0xef&&buffer[1]==0xbb){
console.log('utf8')
}else{
console.log('else')
}
})
js中文乱码怎么解决?
js中文乱码解决办法:设置charset=utf-8,完成。
①.js 文件中文显示乱码Javascript文件XX.js编辑保存时有一种编码方案(如GBK)当打开文件的时候所用的编码(如UTF-8)和保存时的编码方案不一致时,则会出现中文显示乱码。?
解决方案:
(1)用编辑器打开浏览的时候,选择和原文件编码(如GBK)一致的编码方式查看,则不会出现乱码;?
(2)在eclipse中的package explorer中选中乱码的XX.js,右键菜单中选择properties,在Text file encoding中选择与XX.js编辑保存时的编码(如GBK),则可以正常显示。
②网站页面中JavaScript中中文字段乱码 在eclipse或者编辑器中XX.js中中文显示正常,在页面调用XX.js,执行后页面结果中中文字段显示乱码。
解决方案: 在引用XX.js的页面上“显示”加上XX.js文件的编码方式,使之与XX.js文件的本身的编码方式(如GBK)保持一致。<scripttype="text/javascript" language="JavaScript" src="/js/XX.js" charset=“GBK” </script建议:
1)在用Eclipse或者Myeclipse新建XX.js,进行编辑时,建议先将Textfile encoding改为UTF-8,然后进行编辑保存。?
2)用文本文档或者其他编辑器编辑保存XX.js,建议以UTF-8的编码方式保存。
3)在引用XX.js的页面上“显示”加上XX.js文件的编码方式UTF-8。<scripttype="text/javascript" language="JavaScript" src="/js/XX.js".
相关推荐: