@hotlp
2017-02-27T00:26:04.000000Z
字数 3961
阅读 881
未分类
加华PC端的代码比较浅的审查了一下,发现了一些问题,顺便说一下。
去掉无用的注释,写有用的注释,可以用jsDoc的方式,详见jsDoc
idea中只要输入 /** 在按回车就可以了,自动的补充变量等信息。
另外,console.log 都要去掉!!
ID > Tag > Class
ID 选择器是速度最快的,这主要是因为它使用 JavaScript 的内置函数 getElementById();
其次是类型选择器,因为它使用 JavaScript 的内置函数 getElementsByTag();
速度最慢的是 Class 选择器,其需要通过解析 HTML 文档树,并且需要在浏览器内核外递归,这种递归遍历是无法被优化的。
尽量使用 ID 选择器
少直接使用 Class 选择器,尽量结合 Tag 使用,如 input.myclass
多用父子关系,少用嵌套关系
缓存 jQuery 对象
链式调用
性能分析
1 > 2 > 3 > 4 > 5 > 6
var $parent = $('#parent')
$parent.find('.child') // 1
$('.child', $parent) // 2
$('.child', $('#parent')) // 3
$parent.children('.child') // 4
$('#parent > .child') // 5
$('#parent .child') // 6
现在的代码里通篇的$('body')或者其他的公用选择器,完全可以提出来。
当一段代码出现了两次时,他就应该被提取成一个函数了~
开头是 括号,方括号,正则开头的斜杠,加号,减号 时,如果这行代码之前没有分号是会报错的,当然还有return后分号的字段补全。其他情况分号完全可以不加。
但是,我们要按照jsLint的规范来执行——————加!
idea也有个提示的功能,缺少分号逗号时(其实是有不合理,可优化的地方时)会有个黄色的提示,写完代码后,自己过一遍,该加的该调的都调整一下就可以了~
编码规范的愿景:不管有多少人共同参与同一项目,每一行代码都像是同一个人编写的。
PC端是由5个人一起实现完成的,所以统一的规范尤为重要。
比如,js里你把数据整成了这样:
var itemData = {
vars: vars,
xData: data.data.ecMemberIdCardAuth,
cardNo:data.data.ecMemberIdCardAuth.cardNo,
name:data.data.ecMemberIdCardAuth.name,
frontImg:data.data.ecMemberIdCardAuth.frontImg,
inverseImg:data.data.ecMemberIdCardAuth.inverseImg,
status: data.data.ecMemberIdCardAuth.status
};
模板里是这样:
<%=cardNo%>
那么,改bug的时候看到这么一行,还需要去js里看看cardNo是什么
甚至还有,js里已经费劲整成那样了,模板里还不用。。。。
<%=xData.cardNo%>
模板里写代码是不会缩进的,比如:
<%if(xData.orderStatus == 30){%>
<a href="<%=vars.clientRoot%>/mbr/order_logi_info.html?id=<%=xData.id%>" class="main_c">查看物流</a>
<a class="main_c getGood" href="javascript:;" data-id="<%=xData.id%>">确认收货</a>
<%}else if(xData.orderStatus == 20){%>
<a class="main_c alertSend" href="javascript:;" data-id="<%=xData.id%>">提醒发货</a>
<%}else if(xData.orderStatus == 0){%>
<a href="javascript:;" class="main_c cancelOrder" data-id="<%=xData.id%>">取消订单</a>
<a href="<%=vars.clientRoot%>/mbr/order_pay.html?ordersNoStr=<%=xData.no%>," class="main_c">去付款</a>
<%}else if(xData.orderStatus == 40){%>
<%if(isCommented){%>
<a class="main_c">已评价</a>
<%}else{%>
<a class="main_c" href="<%=vars.clientRoot%>/mbr/order_comment.html?id=<%=xData.id%>">去评价</a>
<%}%>
<%}%>
看的头都大了。。。如果在写的时候就整理好:
<%if(xData.orderStatus == 30){%>
<a href="<%=vars.clientRoot%>/mbr/order_logi_info.html?id=<%=xData.id%>" class="main_c">查看物流</a>
<a class="main_c getGood" href="javascript:;" data-id="<%=xData.id%>">确认收货</a>
<%}else if(xData.orderStatus == 20){%>
<a class="main_c alertSend" href="javascript:;" data-id="<%=xData.id%>">提醒发货</a>
<%}else if(xData.orderStatus == 0){%>
<a href="javascript:;" class="main_c cancelOrder" data-id="<%=xData.id%>">取消订单</a>
<a href="<%=vars.clientRoot%>/mbr/order_pay.html?ordersNoStr=<%=xData.no%>," class="main_c">去付款</a>
<%}else if(xData.orderStatus == 40){%>
<%if(isCommented){%>
<a class="main_c">已评价</a>
<%}else{%>
<a class="main_c" href="<%=vars.clientRoot%>/mbr/order_comment.html?id=<%=xData.id%>">去评价</a>
<%}%>
<%}%>
还有:
<p class="goods_price el">
<span>¥</span>
<%=moneyFormat(xData.minPrice)%>
</p>
同一句话,全是文字时,不要换行,换行会出现2~3个空格
平时用不大到的try catch:
try {
//这段代码从上往下运行,其中任何一个语句抛出异常该代码块就结束运行
//也可以用throw 抛出一个异常 0,错误号 'error',描述
// throw new Error(0,"error")
}
catch (e) {
// 如果try代码块中抛出了异常,catch代码块中的代码就会被执行。
//e是一个局部变量,用来指向Error对象或者其他抛出的对象
}
finally {
//无论try中代码是否有异常抛出(甚至是try代码块中有return语句),finally代码块中始终会被执行。
}
try…catch…finally…语法中除了try以外catch和finally都是可选的(两者必须要有一个)
e是一个Error对象,具有下面一些主要属性:
1.description: 错误描述 (仅IE可用).
2.fileName: 出错的文件名 (仅Mozilla可用).
3.lineNumber: 出错的行数 (仅Mozilla可用).
4.message: 错误信息 (在IE下同description)
5.name: 错误类型.
6.number: 错误代码 (仅IE可用).
7.stack: 像Java中的Stack Trace一样的错误堆栈信息 (仅Mozilla可用).
PS:没事多翻翻之前的培训文档,这样就不会犯低级的错误,被审查代码的时候都提心吊胆的说。。。