前端书写规范建议

1.项目、目录及文件命名

1.1 全部采用小写方式, 以下划线分隔。

  • 项目命名: 用项目对应的英文单词命名。例:my_project_name
  • 目录命名: 有复数结构时,要采用复数命名法。例:scripts, styles, images, data_models
  • HTML文件命名: 例:login.html, error_report.html
  • CSS, SCSS文件命名: 例:base.css, pagename.css
  • JS文件命名: 例:jquery.2.2.3.min.js, pagename.js

2.HTML

2.1 语法

  • 缩进使用soft tab(4个空格)
  • 嵌套的节点应当缩进一次
  • 在属性的定义上,使用双引号,不要使用单引号
  • 属性名全小写,用中划线做分隔符
  • 不要在自动闭合标签结尾处使用斜线
  • 不要忽略可选的关闭标签,例: </li> 和 </body>

2.2 HTML5 doctype、lang属性、字符编码、IE兼容模式

  • 在页面开头使用这个简单地 doctype 来启用标准模式,使其在每个浏览器中尽可能一致的展现
  • 建议为 html 根元素指定 lang 属性,从而为文档设置正确的语言。这将有助于语音合成工具确定其所应该采用的发音,有助于翻译工具确定其翻译时所应遵守的规则等等。
  • 通过声明一个明确的字符编码,让浏览器快速的确定适合网页内容的渲染方式,通常指定为'UTF-8'。
  • IE 支持通过特定的 <meta> 标签来确定绘制当前页面所应该采用的 IE 版本。最好是设置为 edge mode ,从而通知 IE 采用其所支持的最新的模式。
<!DOCTYPE html>
<html lang="zh-CN">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=Edge">
    </head>
</html>

2.3 引入css,js文件

根据 HTML5 规范,在引入 CSS 和 JavaScript 文件时一般不需要指定 type 属性,因为 text/css 和 text/javascript 分别是它们的默认值。

<!-- External CSS -->
<link rel="stylesheet" href="main.css">

<!-- External JS -->
<script src="main.js"></script>

2.4 属性顺序、boolean属性

  • class
  • id
  • name
  • data-*
  • src, for, type, href, value , max-length, max, min, pattern
  • placeholder, title, alt
  • aria-*, role
  • required, readonly, disabled

class 用于标识高度可复用组件,所以应处在第一位;
id 更加具体且应该尽量少使用,所以将它放在第二位。

boolean属性指不需要声明取值的属性,XHTML需要每个属性声明取值,但是HTML5并不需要;
boolean属性的存在表示取值为true,不存在则表示取值为false。例:<input type="checkbox" value="1" checked>

2.5 JS生成标签、减少标签数量

在JS文件中生成标签让内容变得更难查找,更难编辑,性能更差。应该尽量避免这种情况的出现。
编写 HTML 代码时,尽量避免多余的父元素。很多时候,这需要迭代和重构来实现。

3.CSS, SCSS

3.1 语法

  • 缩进,使用soft tab(4个空格)。
  • 为选择器分组时,将单独的选择器单独放在一行。
  • 为了代码的易读性,在每个声明块的左花括号前添加一个空格。
  • 声明块的右花括号应当单独成行。
  • 每条声明语句的 : 后应该插入一个空格。
  • 为了获得更准确的错误报告,每条声明都应该独占一行。
  • 所有声明语句都应当以分号结尾。
  • 对于以逗号分隔的属性值,每个逗号后面都应该插入一个空格(例如,box-shadow)。
  • 不要在 rgb()、rgba()、hsl()、hsla() 或 rect() 值的内部的逗号后面插入空格。这样利于从多个属性值(既加逗号也加空格)中区分多个颜色值(只加逗号,不加空格)。
  • 对于属性值或颜色参数,省略小于 1 的小数前面的 0 (例如,.5 代替 0.5;-.5px 代替 -0.5px)。
  • 十六进制值应该全部小写,例如,#fff。在扫描文档时,小写字符易于分辨,因为他们的形式更易于区分。
  • 尽量使用简写形式的十六进制值,例如,用 #fff 代替 #ffffff。
  • 为选择器中的属性添加双引号,例如,input[type="text"]。只有在某些情况下是可选的,但是,为了代码的一致性,建议都加上双引号。
  • 避免为 0 值指定单位,例如,用 margin: 0; 代替 margin: 0px;。
/* Good CSS */
.selector,
.selector-secondary,
.selector[type="text"] {
    padding: 15px;
    margin-bottom: 15px;
    background-color: rgba(0,0,0,.5);
    box-shadow: 0 1px 2px #ccc, inset 0 1px 0 #fff;
}

3.2 属性声明顺序

  1. Positioning(定位,如position,top,z-index)
  2. Box model(盒模型,如display,box-sizing,width,border)
  3. Typographic(排版,如font,line-height,text-align)
  4. Visual(视觉,如background,color,opacity)
  5. Other(其他,如cursor)

3.3 选择器

  • 对于通用元素使用 class ,这样利于渲染性能的优化。
  • 对于经常出现的组件,避免使用属性选择器(例如,[class^="..."])。浏览器的性能会受到这些因素的影响
  • 选择器要尽可能短,并且尽量限制组成选择器的元素个数,建议不要超过 3

4.JavaScript

4.1 命名规则

变量命名:

  • 驼峰式命名。前缀应当是名词。(函数的名字前缀为动词,以此区分变量和函数)
  • 尽量在变量名字中体现所属类型,如:length、count等表示数字类型;而包含name、title表示为字符串类型
  • 常量全大写,用下划线连接
  • 构造函数,大写第一个字母
  • jquery对象必须以'$'开头命名
var firstName = "John";

var MAX_COUNT = 10;

var $body = $('body');

函数命名:

  • 前缀应当为动词。命名建议:可使用常见动词约定
动词 含义
can 判断是否可执行某个动作(权限)
has 判断是否含有某个值
is 判断是否为某个值
get 获取某个值
set 设置某个值
load 加载某些数据

4.2 函数

  • 无论是函数声明还是函数表达式,'('前不要空格,但'{'前一定要有空格
  • 函数调用括号前不需要空格
  • 立即执行函数外必须包一层括号
  • 不要给inline function命名
  • 参数之间用', '分隔,注意逗号后有一个空格

4.3 数组、对象

  • 对象属性名不需要加引号;
  • 冒号与属性值间有个空格。
  • 对象以缩进的形式书写,不要写在一行;
  • 数组、对象最后不要有逗号。
  • 字符串使用双引号,数字不需要。

4.4 注意事项

  • JS 缩进,使用soft tab(4个空格)
  • 通常运算符 ( = + - * / ) 前后需要添加空格
  • 结束行需添加分号;
  • 尽量选用局部变量而不是全局变量
  • 尽量减少DOM调用
  • 将js脚本放到页面底部
  • 使用jquery的data来存取数据,减少对dom的操作
  • 使用on方法绑定事件,这是jquery的推荐使用
  • 选择器的选择:尽量不用标签选择器,能用ID选择器的就不用class选择器
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • <a name='html'>HTML</a> Doctype作用?标准模式与兼容模式各有什么区别? (1)、<...
    clark124阅读 3,600评论 1 19
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,115评论 19 139
  • 回眸千次 月下翘首以盼 终于等到 尘世中那一抹 最迷人的眷恋 恰好的时间 我披漫天相思 你踏一念温婉 刹那芳华的遇...
    朗月明轩阅读 456评论 0 7
  • 狼之子雨和雪 侧耳倾听 秒速五厘米
    摇月亮阅读 320评论 0 0
  • 今天是个难得的好天,也是没有安排的一天。身体有些倦,就想在家呆着。写了一上午的字,这刚上手的颜体真是难以把控,但也...
    王悦yue阅读 131评论 1 3