WEB开发标准是一系列标准的集合, 包含HTML结构标准、CSS表现标准、JS行为标准、代码标准、标准测试。
WEB开发流程统一标准化,实现页面结构、表现、行为适当分离,提高页面易维护性,易拓展性。
<!DOCTYPE html>
空标签: area, base, br, col, command, embed, hr, img, input, keygen, link, meta, param, source, track, wbr
按模块添加注释,解释清楚是什么。
<!--XX模块 START, 我是什么--> <div class="module"> .... </div> <!--XX模块 END -->
使用html validator工具,检查代码。
缩进四个空格, 尽量使用缩写
/* Don't */ .demo { margin-top: 2px; margin-right: 3px; margin-bottom: 4px; margin-left: 0; } /* Better */ .demo { margin: 2px 3px 4px 0; }
属性名后紧跟“:”
属性值前有一空格,后面以“;”结束
属性值为0,不加单位
十六进制颜色值,尽量使用三个字符 #fff, 非#ffffff
url()中不使用引号
.demo { backgound-image: url(/your/path/img); }
定位相关,盒模型相关,其它
.demo { position: absolute; top: 0; left: 0; width: 50px; height: 50px; border: 1px solid #ddd; color: #fff; }
尽量不使用!important,权重最高
尽量不使用id选择器,权重比较高
尽量不使用元素标签名、id、class进行组合
/* Don't */ #header.title { ... } /* Better */ .title { ... }
样式针对多个选择器,每个选择器占一行
.btn, .txt, .hover { .... }
利用IE条件注释,在html标签的class里标识ie版本,但是尽量避免使用,且请新建一个hack.css专属文件存放hack样式。
<!--[if lt IE 7]> <html class="ie6 oldie"> <![endif]--> <!--[if IE 7]> <html class="ie7 oldie"> <![endif]--> <!--[if IE 8]> <html class="ie8 oldie"> <![endif]--> <!--[if IE 9]> <html class="ie9"> <![endif]--> <!--[if !IE]><!--><html> <!--<![endif]-->
.ie9 .demo{ ... } .ie8 .demo{ ... } .ie7 .demo{ ... } .ie6 .demo{ ... }
下面hack方法前提是浏览器标准模式
这些hack方法,一般直接在原样式中混合使用,大量的hack方法,势必会造成css代码混乱,维护起来困难。
按模块编写注释,解释清楚做了什么
/*XX模块 START, 我做了什么*/ .module { ... } .module .title { ... } .module .content { ... } /*XX模块 END*/
使用csslint工具,检查代码。
缩进四个空格
变量名、函数名使用驼峰式命名: subTitle
局部变量声明务必使用var
全局变量、枚举变量、常量全部大写,且注释注明
语句结束以“;”结尾
变量声明提前并集中
//我是做什么的 function createAudit(){ var startTime, endTime, auditType, timeSpace, progress = 0; ... }
做异常处理,界面出错,给予用户友好提示
try{ //Do something }catch(e){ //友好提示 }
只用于反序列化
var myStr = 'blablablablablabla' +
'hlahlahlahlahlahlahla' +
'xlaxlaxlaxlaxlaxlaxla' +
'slaslaslaslaslaslasla';
/*Don't*/ var arr = new Arr, obj = new Object; /*Better*/ var arr = [], obj = {};
不要尝试修改内置对象方法、属性,可以建立统一接口来维护公用函数。
/*Don't*/ String.prototype.newFunc = function(){ }
使用单引号更好,html中使用双引号
分号会被隐士插入到代码中,大括号和前面的代码放在同一行
if (boolean) { //... } else { //... }
var arr = [ someVal, anotherVal, anotherVal, anotherVal, anotherVal //不要再这里加逗号,ie7,ie8会报错 ]; var obj = { someOpt: someVal, anotherOpt: anotherVal, anotherOpt: function () { } //不要再这里加逗号,ie7,ie8会报错 };
尽可能将所有函数参数写在同一行,但为了保持可读性,一行超过80个字符可适当换行,甚至每个参数独立一行
very.very.very.very.lon.long.func = function ( someOpt, someOpt anotherOpt) { //.... } function foo (veryLongLongVariable, veryLongLongVariable) { //... } function foo ( veryLongLongLongLongVariable, veryLongLongLongLongVariable) { //... }
if (someLongLongLongVariable && anotherLongLongVariable) { //... } var y = a ? someLongLongVariable : anotherLongLongVariable;
全局变量、常量、函数添加注释
使用jshint工具,检查代码。