前端代码规范大全

如果你能认真读完此文,将对你收益匪浅!

目录

初衷

文件/资源命名

HTML

CSS

JavaScript

编辑器插件和配置文件

初衷

不管参与项目的人数有多少,确保每一行代码都像是同一个人编写的;

根据实际情况制定良好的代码规范;

遵守编码风格使代码更容易维护,对长期项目大有裨益;

实施代码规范增加代码可读性,提高协作开发效率;

实施代码规范减少低级 bug 的出现概率;

提供相关工具(插件),保障代码规范的无缝接入。

1、文件/资源命名

——1.1 通用规则

在 web 项目中,所有的文件名应该都遵循同一命名约定,使用语义化的文件命名,文件名要能“望文生义”,尽量避免使用拼音;

文件名只使用字母 a-z,数字 0-9,连字符 -,下划线 _ 和句点 .;

文件命名以字母开头而不是数字,而以特殊字符开头命名的文件,一般都有特殊的含义与用处;

文件名中字母全部采用小写,多个单词用下划线分隔(识别效率较驼峰体高);

如需缩写单词,则应使用约定俗成的缩写形式,如 btn、nav、num、img 等,不能自造单词,以免引起歧义。

——1.2 目录命名

参照文件命名通用规则。

要合理将文件分类到不同目录,避免一个目录下存放大量的文件。

——1.3 HTML文件命名

参照文件命名通用规则

——1.4 CSS,SCSS,LESS文件命名

参照文件命名通用规则。

压缩版本的 CSS 文件,文件名后面需加上 .min 后缀。

——1.5 JAVASCRIPT 文件命名

参照文件命名通用规则。

压缩版本的 JavaScript 文件,文件名后面需加上 .min 后缀。

——1.6 图片命名

参照文件命名通用规则。

图标类图片,需在文件名前面加上 ico_ 前缀。

背景类图片,需在文件名前面加上 bg_ 前缀。

雪碧图图片,需在文件名后面加上 _sprite 后缀。

Retina 图片,需在文件名后面加上 _1x 或 _2x 后缀来标记原图和 2 倍图。

2、HTML

——2.1 通用规则

尽量遵循 HTML 标准和语义,但是不应该以浪费实用性作为代价;

任何时候都要用尽量小的复杂度和尽量少的标签来解决问题;

不要使用 HTML5 规范中已经被废弃的标签;

使用 label 包裹附加文字的表单输入框(radio、checkbox);

标签名全小写;

属性名全小写,用中划线做分隔符;

属性值使用双引号,不要使用单引号;

不要在自动闭合标签结尾处使用斜线(HTML5 规范指出他们是可忽略的)。

——2.2 缩进

缩进使用 1 个 Tab(占 2 个空格宽度);

除 head 和 body 外,嵌套的节点应该缩进;

每个块级、列表、表格元素单独占一行,每个子元素都相对父元素缩进;

坚决不要使用 Tab 和空格混搭的缩进方式。

使用 Tab 缩进比空格缩进有哪些优势?

空格缩进一般通过键入 2 或 4 个空格来缩进对齐,其按键成本比 Tab 高得多(有些 IDE 可以设置空格宽度),使用 Tab 缩进更快捷;

使用 Shift + Tab 组合键可以选取多行向前缩进,使用空格缩进做不到;

Tab 可以替换,在支持正则搜索的编辑器里,使用 \t 可以匹配搜索全部 Tab,空格缩进做不到。

——2.3 文档头

页面开头必须有文档头声明,推荐使用 HTML5 简单的 doctype 声明来启用标准模式,使页面在每个浏览器中尽可能一致的展现。

按照惯例,doctype 应大写。

——2.4 字符编码

在 HTML 中指定字符编码,让浏览器轻松、快速的确定适合网页内容的渲染方式。

字符编码通常设为 UTF-8 。

——2.5 渲染模式

指定使用本地最高版本的 IE 来渲染页面。

对于国内常见的双核浏览器,指定优先采用极速模式(webkit 内核)来渲染页面。(目前仅 360 浏览器支持)

——2.6 CSS 和 JAVASCRIPT 文件引入

无需为引入的 CSS 和 JavaScritp 指明 type 属性(在 HTML5 规范中,text/css 和 text/javascript 分别是他们的默认值,省略后对页面无影响);

通常引入的 CSS 文件放在 内;

一般情况下,JavaScript 脚本应放在页面底部, 标签前面,以免阻塞页面加载,同时也避免了文档加载完成前 JS 无法获取 DOM 元素的问题。

——2.7 属性顺序

HTML 属性应当按照特定的顺序依次排列,确保代码的易读性和可维护性。

Class 用于标识高度可复用组件,因此应该排在首位;id 用于标识具体组件,排在第二位。

——2.8 BOOLEAN 属性

HTML5 规范中,boolean 属性不需要声明属性值。

Boolean 属性的存在表示取值为 true,不存在则表示取值为 false。

3、CSS

—— 3.1通用规则

代码风格上要以具有可读性、可维护性为基本原则,压缩代码的工作交给工具去做;

css 文件使用无 BOM 的 UTF-8 编码;

不允许有空的规则;

元素选择器用小写字母;

不要在一个文件里出现两个相同的规则;

不允许驼峰命名多个字母用短杠分割

每个属性声明末尾都要加分号。

——3.2 缩进

与 HTML 缩进方式一样,缩进使用 1 个 Tab(占 2 个空格宽度

——3.3 空格

属性值前,即属性名的 : 后加空格;

多个规则的分隔符 , 后加空格;

选择器 >、+、~ 前后加空格;

{ 前加空格;

!important 的 ! 前加空格;

@else 前后加空格;

属性值中的 , 后加空格;

SCSS 中的运算符前后要加空格;

每行行末不要有多余的空格。

——3.4 换行

{ 后和 } 前要换行,如果只有一条属性则例外,无需换行;

每个属性独占一行;

多个选择器的分隔符 , 后要换行;

相邻的两段样式之间要用一个空行隔开;

属性组之间需要有一个空行隔开。属性分组规范请参阅“声明顺序”部分。

——3.5 引号

最外层统一使用双引号;

属性选择器中的属性值要用引号;

font-family 中含有空格的字体名需要加引号;

url 的内容要用引号。

CSS url 的内容加引号有什么好处?

降低内容路径被 XSS 注入攻击的风险;

避免一些浏览器兼容问题。

——3.6 注释

注释使用 / 注释内容 /;

SCSS 中单行注释用 // 注释内容,不会输出到编译后的 CSS 中;

如果希望将 SCSS 中的注释保留输出(即使在 compressed 输出模式下),则使用 /! 注释内容 /;

注释的缩进与下一行代码保持一致;

/ 之后、/ 之前和 // 之后要加一个空格;

// 写在代码右侧时,其与左侧代码间隔 2 个空格。

注: // 注释只用于 SCSS 中。

——3.7 命名

命名要符合语义,尽量避免使用拼音(约定俗成的除外,例如 youku)、无意义或理解困难、易产生歧义的字符;

Class 类名使用小写字母,以中划线分隔;

仅当作 JS 中选择器使用的 class 类名,加上 js- 前缀;

SCSS 中的变量和 placeholder 使用小写字母,中划线分隔;

id 采用小驼峰式命名;

SCSS 中的函数、混合采用小驼峰式命名。

——3.8 声明顺序

推荐的样式编写顺序依次为:

Positioning(定位)

Box model(盒模型)

Typographic(排版)

Visual(视觉)

Misc(杂项)

——3.9 简写和省略

颜色 16 进制用小写字母,可以简写的要简写;

根据实际情况选择属性的简写方式;

属性值如果是类似 0.x 的小数,则省略小数点前的 0;

属性值如果是 0,则省略单位。

——3.10

前缀属性

同个属性不同前缀的写法需要在垂直方向保持对齐,具体参照示例的写法;

无前缀的标准属性应该写在有前缀的属性后面。

如非必要,尽量不要手写前缀属性,推荐使用自动化工具来处理,例如:autoprefixer。

——3.11

杂项

如果样式表文件中包含汉字(注释)或其他 Unicode 字符,建议在第一行加上 @UTF-8 字符集声明,避免乱码;

后代选择、子选择器不要超过 4 层;

慎用 !important;

尽量少用 * 选择器。

最后:“相信有很多想学前端的小伙伴,今年年初我花了一个月整理了一份最适合2018年学习的web前端干货,从最基础的HTML+CSS+JS到移动端HTML5等都有整理,送给每一位前端小伙伴,53763,1707这里是小白聚集地,欢迎初学和进阶中的小伙伴。”

祝大家早日学有所成,拿到满意offer,快速升职加薪,走上人生巅峰。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容

  • 初衷 不管参与项目的人数有多少,确保每一行代码都像是同一个人编写的; 根据实际情况制定良好的代码规范; 遵守编码风...
    强哥科技兴阅读 463评论 0 1
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,420评论 1 45
  • 最佳原则 坚持制定好的代码规范。无论团队人数多少,代码应该同出一门。如果你想要为这个规范做贡献或觉得有不合理的地方...
    Tiny_ae3d阅读 1,621评论 0 1
  • 一、前端编辑器 vscode 对angular、typescript有着非常友好的支持,轻便快捷,代码统一,一键格...
    ElliottsSu阅读 964评论 0 2
  • 用户调研是产品经理必须掌握的重要技能,借助对典型用户的深入分析,让产品设计更加靠谱,保障产品不会偏离目标用户。本篇...
    勤劳的馒头阅读 1,632评论 3 8