前端技术汇总html日常日常知识储备互联网科技

还在担心别人难以读懂你的前端代码?

2016-10-14  本文已影响490人  魔力老钱

前言:

良好的代码规范,有利于开发的规范性,代码的可读性,减少错误发生的可能性。
所以下面是我整理出来的一些关于前端的代码规范,欢迎大家补充。

1.文件命名规范

文件全部采用小写方式,多个单词组成时,以中划线分隔。
比如: my-project-name
注:有复数结构时,要采用复数命名法,比如说: images

2.HTML相关规范

(1) id
(2) class
(3) name
(4) data-*
(5) src, for, type, href
(6) title, alt
(7) aria-*, role

Class 是为高可复用组件设计的,理论上他们应处在第一位。Id 更加具体并且唯一性,所以他们处在第二位。但为了突出id的重要性, 把id放到了第一位。

<a id="..." class="..." data-modal="toggle" href="#"> Example link </a>
<input type="button" disabled />

简而言之,不要为 Boolean 属性添加取值。


3.CSS相关规范

position: absolute; top: 0; right: 0; bottom: 0; left: 0; z-index: 100;

2.Box model 盒模型(布局相关的属性)

display: block; float: right; width: 100px; height: 100px;
 padding: 10px; margin: 10px;

3.Typographic 排版(字体对齐相关属性)

 font: normal 13px "Helvetica Neue", sans-serif; 
line-height: 1.5; color: #333; text-align: center;

4.Visual 外观(边框背景相关属性)

background-color: #f5f5f5; border: 1px solid #e5e5e5; 
border-radius: 3px;

Positioning 处在第一位,因为他可以使一个元素脱离正常文本流,并且覆盖盒模型相关的样式。
盒模型紧跟其后,因为他决定了一个组件的大小和位置。
其他属性只在组件 内部 起作用或者不会对前面两种情况的结果产生影响,所以他们排在后面。

为了方便查阅,下面提供一个属性排序表,可以大致参考一下

var order = [ 'position' , 'top' , 'right' , 'bottom' , 'left' , 'z-index' , 
'display' , 'float' , 'width' , 'height' , 'max-width' , 'max-height' , 
'min-width' , 'min-height' , 'padding' , 'padding-top' , 
'padding-right' , 'padding-bottom' , 'padding-left' , 'margin' , 
'margin-top' , 'margin-right' , 'margin-bottom' , 'margin-left' , 
'margin-collapse' , 'margin-top-collapse' ,
 'margin-right-collapse' , 'margin-bottom-collapse' , 
'margin-left-collapse' , 'overflow' , 'overflow-x' , 'overflow-y' ,
 'clip' , 'clear' , 'font' , 'font-family' ,
 'font-size' , 'font-smoothing' , 'osx-font-smoothing' ,
 'font-style' , 'font-weight' , 'hyphens' , 'src' , 'line-height' ,
 'letter-spacing' , 'word-spacing' , 'color' , 'text-align' ,
 'text-decoration' , 'text-indent' , 'text-overflow' , 
'text-rendering' , 'text-size-adjust' , 'text-shadow' , 
'text-transform' , 'word-break' , 'word-wrap' , 'white-space' , 
'vertical-align' , 'list-style' , 'list-style-type' , 
'list-style-position' , 'list-style-image' , 'pointer-events' , 'cursor' , 
'background' , 'background-attachment' , 'background-color' , 
'background-image' , 'background-position' , 'background-repeat' , 
'background-size' , 'border' , 'border-collapse' , 'border-top' , 
'border-right' , 'border-bottom' , 'border-left' , 'border-color' , 
'border-image' , 'border-top-color' , 'border-right-color' , 
'border-bottom-color' , 'border-left-color' , 'border-spacing' ,
 'border-style' , 'border-top-style' , 'border-right-style' , 
'border-bottom-style' , 'border-left-style' , 'border-width' , 
'border-top-width' , 'border-right-width' , 'border-bottom-width' , 
'border-left-width' , 'border-radius' , 'border-top-right-radius' , 
'border-bottom-right-radius' , 'border-bottom-left-radius' , 
'border-top-left-radius' , 'border-radius-topright' , 
'border-radius-bottomright' , 'border-radius-bottomleft' , 
'border-radius-topleft' , 'content' , 'quotes' , 'outline' ,
 'outline-offset' , 'opacity' , 'filter' , 'visibility' , 'size' , 'zoom' , 
'transform' , 'box-align' , 'box-flex' , 'box-orient' , 'box-pack' , 
'box-shadow' , 'box-sizing' , 'table-layout' , 'animation' , 
'animation-delay' , 'animation-duration' , 'animation-iteration-count' ,
 'animation-name' , 'animation-play-state' , 
'animation-timing-function' , 'animation-fill-mode' , 
'transition' , 'transition-delay' , 'transition-duration' , 
'transition-property' , 'transition-timing-function' , 'background-clip' , 
'backface-visibility' , 'resize' , 'appearance' , 'user-select' , 
'interpolation-mode' , 'direction' , 'marks' , 'page' , 'set-link-source' ,
 'unicode-bidi' , 'speak' ]

4.JavaScript相关规范

(1)分号,单行长度
(2)空格
// 这是b方法
function b() {
    var a = '1';
}
(3)变量命名
var thisIsMyName;
var goodID;
reportURL
var AndroidVersion;
var iOSVersion;
var MAX_COUNT = 10;
function Person(name) { this.name = name }
(4)字符常量
(5)注释
  /**
   * [a description] 方法描述
   * @param  {[type]} num1 [description] 参数1 type表示类型 description参数介绍
   * @param  {[type]} num2 [description] 参数2 type表示类型 description参数介绍
   * @return {[type]}      [description] 返回值 type表示返回类型 description返回内容介绍
   */
  function a(num1,num2) {

  }
(6)括号对齐
function a(num1,num2) {

}
if (true) {

}
(7)比较运算符
(8)杂项

结语:

这是我罗列的一些常用的前端规范,欢迎大家补充,指出需要纠正的地方。
规范的制定很简单,但是真正能够严格执行起来,才是对一个团队的考验,良好的规范有利于团队的快速开发,定位错误。所以大家还是从现在做起,慢慢去适应这样的规范,这样如果一个团队都是统一规范的话,那么大家阅读彼此的代码就会相对轻松很多了。

上一篇 下一篇

猜你喜欢

热点阅读