前端代码规范,类似google
jade类以及内嵌js
- 缩进为2,除了js声明 如:
//html
.form-group
label.col-sm-2.control-label 主机
.col-sm-6
input.form-control(type="text", name="host")
//js
var routeArr = [],
buttonType = $route.find('button')[0].dataset.type,
selectCollection = 'custom';
$.each(selectCollection, function(){
var selectVal = this.value;
if(!this.value)selectVal = '*';
routeArr.push(selectVal)
});
通用前端规范
#html规范
- 排版缩进为4
- 标签属性使用小写
- 在HTML5规范里并没有严格要求属性值两边加引号。但考虑到一些属性可以接受空白值,为了保持一致性,我们要求所有属性值必须加上引号。
- 段落分隔符要使用实际对应的
<p>
素,而不是用多个<br>
标签。 - 在合适的条件下,充分利用
<dl>
(定义列表)和<blockquote>
标签。 - 列表中的条目必须总是放置于
<ul>
、<ol>
或<dl>
中,永远不要用一组<div>
或<p>
来表示。 - 给每个表单里的字段加上
<label>
标签,其中的 for 属性必须和对应的输入字段对应,这样用户就可以点击标签。同理,给标签加上 cursor:pointer; 样式也是明智的做法。 - 多媒体标签向后兼容,记得加上alt属性
#CSS规范--(like google)
- 正确使用缩写,例如navigation就可以缩写为nav,而author就不要缩写
- id与class前不必加上标签类型
- 属性尽量使用简写形式,如font或background等
- 0后面不要加上单位
- 小数前不要加上0
- url()中不要加入引号,例如@import url(//www.google.com/css/go.css);
- 16进制尽量使用3位表示
- 可以为项目加入前缀,例如.adw-help {} /* AdWords */
- 分词使用“-”,如前例
- 属性采用字典序申明,包括前缀如moz安排在webkit之前
background: fuchsia;
border: 1px solid;
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
border-radius: 4px;
color: black;
text-align: center;
text-indent: 2em;
- 属性:与值之间用一个空格分开,例如font-weight: bold;
- 为每个选择符及每个属性申明单独使用一行
h1,
h2,
h3 {
font-weight: normal;
line-height: 1.2;
}
#Javascript规范
- 变量声明必须使用var
- 记得使用分号结尾
- 随意使用嵌套函数
- 块级域中不用使用函数声明形式(不符合标准),应该这样处理:
if (x) {
var foo = function() {}
}
- 原生类型不要使用包装对象的构造函数来进行声明,但是可以用来进行类型转换如:
var x = Boolean(0);
if (x) {
alert('hi'); // This will never be alerted.
}
typeof Boolean(0) == 'boolean';
typeof new Boolean(0) == 'object';
- 不要使用with
- for in 不要用在遍历array上,只能用在object上
- 多行的字符串字面量,应该使用+进行字符串拼接,而不是进行换行
- array与object创建使用字面量而不是包装构造函数
- 不要改变内置对象的prototype
- 私有成员使用前下划线:_person
- 永远要为项目添加一个命名空间,不要为外部引入的代码再引入自定义的成员,如果必要则应该使用外部代码暴露的api
- 文件命名统一使用小写”.js”,同时推荐”-“而不是”_”
- 字符串相对于双引号,推荐使用单引号
- 留空。总的来说,使用留空应该遵循源远流长的英语阅读惯例。 例如,每个逗号和冒号(以及适用的分号)后面要空一格,但在括号内部的左侧和右侧都不要加空格。另外,大括号应该总是和他们前面的参数出现在同一行。
来看看下面的 JavaScript for循环的例子...
##正确
for (var i = 0, j = arr.length; i < j; i++) {
// Do something.
}
##不正确
for ( var i = 0, j = arr.length; i < j; i++ )
{
// Do something.
}
##不正确
for(var i=0,j=arr.length;i<j;i++){
// Do something.
}
</>