前端规范

<font face="微软雅黑">前端编码规范</font>

<font face="微软雅黑">前端代码风格</font>

一、文件命名

  • 组件命名首字母大写 驼峰式命名
DatePicker.vue
  • 其他文件首字母小写 驼峰式命名
datePicker.css

二、HTML 编码规范

2.1 标签与属性

1、class 小写 使用 模块名_功能名 例:

<a class="home_conatiner"></a>

eg: 如项目名过长可酌情缩写

2、id 首字母小写 驼峰式命名

<a id="balckLine"></a>

3、所有 html 属性必须添加双引号(非单引号)。

// 禁止
<div id=mainframe> 或 <div id='mainframe'>

// 推荐
<div id="mainframe">

4、标签属性顺序

属性应该按照特定的顺序出现以保证易读性;

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

class 是为高可复用组件设计的,所以应处在第一位;

id 更加具体且应该尽量少使用,所以将它放在第二位

2.2 风格

1、格式缩进

html 编码统一格式化显示,使用一个 Tab 键进行分层缩进 (2 个空格宽度),使整个页面结构层次清晰,方便阅读和修改。

2、模块注释

html 较大独立模块之间注释格式统一使用:

<!--模块 start-->
<!--模块 end-->

或者:

<!-- XXX模块 -->

<!-- /XXX模块 -->

三、CSS 编码规范

3.1 CSS 引用规范

1、<font color=red>所有 CSS 均为外部调用,不得在页面书写任何内部样式或行内样式;</font>

2、内部模块之间注释(建议 @模块英文名,好查找):

/* @header 头部 -----------------------------------------------------------*/
.infoArea {
}

/* 单行注释 */
.specArea {
}

/* @footer 页尾 ----------------------------------------------------------*/
.price {
}

3、引号

最外层统一使用双引号;

url 的内容要用引号;

属性选择器中的属性值需要引号。

.element:after {
  content: '';
  background-image: url('logo.png');
}

li[data-type='single'] {
  ...;
}

3.2 杂项

  1. 不允许有空的规则;

  2. 元素选择器用小写字母;

  3. 去掉小数点前面的 0;

  4. 去掉数字中不必要的小数点和末尾的 0;

  5. 属性值'0'后面不要加单位;

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

  7. 无前缀的标准属性应该写在有前缀的属性后面;

  8. 不要在同个规则里出现重复的属性,如果重复的属性是连续的则没关系;

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

  10. 用 border: 0; 代替 border: none;;

  11. 选择器不要超过 4 层(在 scss 中如果超过 4 层应该考虑用嵌套的方式来写);

  12. 尽量少用'*'选择器。

四、 JavaScript 规范(jslint/eslint)

4.1 JS 注释规则

1、文件头部注释

/**
 * @created : 2017/09/15
 * @author : Mr.Wang
 * @desc : 当前js模块功能描述
 **/

2、方法注释

/**
 * @description 加法运算
 * @param {Number} num1 加数
 * @param {Number} num2 被加数
 * @return {Number} result 结果
 */
function add(num1, num2) {
  return num1 + num2
}

3、单行注释

双斜线后,必须跟一个空格;
缩进与下一行代码保持一致;
可位于一个代码行的末尾,与代码间隔一个空格。

var funName = function(arg1, arg2) {
  this.arg1 = arg1

  // 单行注释说明(上面添加一空行, //与说明之间空一格)
  this.arg2 = arg2
}

4.2 JS 命名规则

1、方法命名

  • 变量名应由 26 个大小写字母(A..Z,a..z),10 个数字(0..9),和“_”(下划线)组成。
  • 首字母小写 驼峰式命名
  • 私有方法以 <font color='red'>_</font> 开始
  • 全局方法以 <font color='red'>$</font> 开始
  • 构造函数 首字母大写 驼峰式命名
    动词 含义 返回
    can 判断是否可执行某个动作(权限) 函数返回一个布尔值。true:可执行;false:不可执行
    has 判断是否含有某个值 函数返回一个布尔值。true:含有此值;false:不含有此值
    is 判断是否为某个值 函数返回一个布尔值。true:为某个值;false:不为某个值
    get 获取某个值 函数返回一个非布尔值
    set 设置某个值 无返回值、返回是否设置成功或者返回链式对象
    load 加载某些数据 无返回值或者返回是否加载完成的结果
  • 特殊情况
// 'URL'在变量名中全大写
var reportURL

// 'Android'在变量名中大写第一个字母
var AndroidVersion

// 'iOS'在变量名中小写第一个,大写后两个字母
var iOSVersion

2、 杂项

1、用'===', '!=='代替'==', '!=';

2、不要像这样使用构造函数,例:new function () { ... }, new Object;

3、不要在内置对象的原型上添加方法,如 Array, Date;

4、不要在内层作用域的代码里声明了变量,之后却访问到了外层作用域的同名变量;

5、变量不要先使用后声明;

6、不要在一句代码中单单使用构造函数,记得将其赋值给某个变量;

7、不要在同个作用域下声明同名变量;

8、不要在一些不需要的地方加括号,例:delete(a.b);

9、不要声明了变量却不使用;

10、不要在应该做比较的地方做赋值;

11、debugger,console 不要出现在线上的代码里;

12、数组中不要存在空元素;

13、不要在循环内部声明函数;

4.3 vue 风格

1、prop 定义尽量详细

props: {
  status: {
    type: String,
    required: true
  }
}

2、 避免 v-if 和 v-for 用在一起

3、 生命周期函数按照加载顺序 置于下方

export default {
  name:'MyComponents';
  data() {
    mes: 'hello world'
  },
  prop: {
    status: {
      type: String,
      required: true
    }
  },
  computed: {},
  watch: {},
  methods: {},
  beforeCreate() {},
  created() {},
  beforeMount() {},
  mounted() {}
}

5.其他

其他未被提及的 具体依照 eslint 规范

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

推荐阅读更多精彩内容

  • 最佳原则 坚持制定好的代码规范。无论团队人数多少,代码应该同出一门。如果你想要为这个规范做贡献或觉得有不合理的地方...
    Tiny_ae3d阅读 1,621评论 0 1
  • 1 前言 HTML 作为描述网页结构的超文本标记语言,一直有着广泛的应用。本文档的目标是使 HTML 代码风格保持...
    山豆山豆阅读 1,159评论 2 6
  • 通用规范 tab键用两个空格代替 因为在不同系统的编辑工具对tab解析不一样,windows下的tab键是占四个空...
    戈薇薇阅读 466评论 0 1
  • 1:通用规范 tab键用两个空格代替 因为在不同系统的编辑工具对tab解析不一样,windows下的tab键是占四...
    糖心m阅读 444评论 0 1
  • 通用规范 tab键用两个空格代替 因为在不同系统的编辑工具对tab解析不一样,windows下的tab键是占四个空...
    米塔塔阅读 413评论 0 7