前端手册(一)前端编码规范

801 阅读5分钟

针对我司的代码规范,我整理出一下几点:第一部分的html的规范,二是css的规范,其次是javascript的规范,最后是vue2.x的规范。

一、html规范

DOCTYPE 声明

HTML文件必须加上 DOCTYPE 声明,并统一使用 HTML5 的文档声明:

<!DOCTYPE html>

CHARSET

一般情况下统一使用 “UTF-8” 编码

<meta charset="UTF-8">

元素及标签闭合

HTML元素共有以下5种:

  • 空元素:area、base、br、col、command、embed、hr、img、input、keygen、link、meta、param、source、track、wbr

  • 原始文本元素:script、style

  • RCDATA元素:textarea、title

  • 外来元素:来自MathML命名空间和SVG命名空间的元素。

  • 常规元素:其他HTML允许的元素都称为常规元素。

元素标签的闭合应遵循以下原则:

  • 原始文本元素、RCDATA元素以及常规元素都有一个开始标签来表示开始,一个结束标签来表示结束。
  • 某些元素的开始和结束标签是可以省略的,如果规定标签不能被省略,那么就绝对不能省略它。
  • 空元素只有一个开始标签,且不能为空元素设置结束标签。
  • 外来元素可以有一个开始标签和配对的结束标签,或者只有一个自闭合的开始标签,且后者情况下该元素不能有结束标签。

为了能让浏览器更好的解析代码以及能让代码具有更好的可读性,有如下约定:

  • 所有具有开始标签和结束标签的元素都要写上起止标签,某些允许省略开始标签或和束标签的元素亦都要写上。
  • 空元素标签都加上 “/” 字符

类型属性

不需要为 CSS、JS 指定类型属性,HTML5 中默认已包含

推荐:

<link rel="stylesheet" href="" >
<script src=""></script>

不推荐:

<link rel="stylesheet" type="text/css" href="" >
<script type="text/javascript" src="" ></script>

语法标准

  • 缩进使用 tab(2 个空格);

  • 元素嵌套规范:嵌套的节点应该缩进,每个块状元素独立一行,内联元素可选;

  • 在属性上,使用双引号,不要使用单引号;

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

  • 要在自动闭合标签结尾处使用斜线;

    Page title
    <!-- 属性名全小写,用中划线(-)做分隔符 -->
    <h1 class="hello-world">Hello, world!</h1>
    

文件模板

guide.aotu.io/docs/html/t…

二、css规范

语法标准

  • 缩进使用 tab(2 个空格);

  • 每个声明结束都要加分号;

  • 注释统一使用 /* */;

    /* 这里是注释 */

    .element { width: 50px; height: 50px; }

  • 引号

    /* url 的内容要用引号 */

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

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

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

  • 命名

    /* class 类名使用小写字母,以中划线分隔*/

    .element-content {

    }

    /* id 采用小驼峰(camelCase)式命名*/

    #myDialog {

    }

代码易读性

  • 为单个css选择器或新申明开启新行

    .jdc, .jdc_logo, .jdc_hd {
    color: #ff0; }

    .nav{
    color: #fff; }

  • 颜色值 rgb() rgba() hsl() hsla() rect() 中不需有空格,且取值不要带有不必要的 0

    .jdc {
    color: rgba(255,255,255,.5); }

  • 属性值十六进制数值尽量不用简写

    .jdc {

    color: #ffffff;

    }

  • 不要为 0 指明单位

    .jdc {
    margin: 0 10px; }

属性书写顺序

遵循以下顺序:

  1. 布局定位属性:display / position / float / clear / visibility / overflow

  2. 自身属性:width / height / margin / padding / border / background

  3. 文本属性:color / font / text-decoration / text-align / vertical-align / white- space / break-word

  4. 其他属性(CSS3):content / cursor / border-radius / box-shadow / text-shadow / background:linear-gradient …

    .jdc {

    display: block;
    position: relative;
    float: left;
    width: 100px;
    height: 100px;
    margin: 0 10px;
    padding: 20px 0;
    font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif;
    color: #333;
    background: rgba(0,0,0,.5);
    -webkit-border-radius: 10px;
    -moz-border-radius: 10px;
    -o-border-radius: 10px;
    -ms-border-radius: 10px;
    border-radius: 10px;

    }

三、javasript规范

变量命名

  • 采用camalCase

函数命名

  1. 命名方式: 小驼峰式命名方法

  2. 命名规范: 动词+方法描述的方式。

  3. 推荐动词:

    动词

    描述

    返回值

    is

    是否为某个值

    布尔值

    can

    是否能执行某个操作

    布尔值

    has

    是否有某个值

    布尔值

    set

    设置某个值

    无返回值、返回是否设置成功或者返回链式对象

    get

    获取某个值

    非布尔值

    function setName(name) {
    	this.name = name;
    }
    
    function getName() {
    	return this.name;
    }
    

    若是构造函数,则使用大驼峰式命名方法。

    function Student(name, age) {
      this.name = name;
      this.age = age;
    }
    
    const oStudent = new Student('Tom', 18);
    
    

书写优化方法

  • 多个 else-if 带返回值的 优化策略

    /* 优化前 */

    function getPosition(direction){
    if(direction == "left"){ return "左" }else if(direction == "right"){ return "右" }else if(direction == "top"){ return "上" }else if(direction == "bottom"){ return "下" }else{ return "未知" } }

    /* 优化后 */

    function getPosition(direction){ return ({ left:"左", right:"右", top:"上", bottom:"下" })[direction] || "未知" }

四、Vue2.x规范

目录、文件、组件命名规范

  • 目录

同一采用kebab-case风格

  • 组件文件

组件名应该始终是多个单词的

组件名应该倾向于完整单词而不是缩写

命名遵守PascalCase约定。组件文件名除index.vue之外,一律采用PascalCase写法;

在components公共组件文件夹下,每个index.vue都要有一个描述组件功能的以PascalCase方式命名的文件夹;

在views每个构成具体业务的小组件遵循PascalCase的规范命名.vue文件

  • utils下的公共方法文件,assets下的图片,styles,js;

统一采用 kebab-case 风格

  • api文件下的文件

统一采用camelCase的方法,里面的成员方法同一采用camelCase方式命名

组件开发规范

  • 注册组件的时候,全部使用 PascalCase 格式。

    import UserBook from './user/UserBook'

  • props命名规范

声明prop的时候,其命名应该始终使用camelCase,而在模板中应该始终使用kebab-case

<welcome-message greeting-text="hi"></welcome-message>

<script>
  props: {
    greetingText: String;
  }
</script>
  • 组件/实例的选项顺序

    • name (全局引用)
    • components (模板依赖)
    • directives ...
    • filters ...
    • mixins (组合)
    • props (接口)
    • data (本地状态属性)
    • computed ...
    • watch (响应回调)
    • created (生命周期函数)
    • mounted ...
    • methods (实例属性)
  • methods命名规范

采用camelCase,操作性函数同一使用动词或名词+动词的形式

jumpPage() {

}

openCarInfoDialog () {
    
}

请求数据的方法,以data结尾

getListData () {
 
}

postFormData () {
    
}

附注

参考文档如下:

凹凸实验室开发规范

vue风格指南