• 前端开发规范


    一.基本规范

    1.基本原则

    结构、样式、行为分离

    尽量确保文档和模板只包含html 结构 ,样式都放到样式表里,行为都放到脚本里。

    缩进

    统一两个空格缩进,不要使用 Tab 或 空格混搭。

    文件编码

    使用不带 BOM 的UTF-8 编码。

    1.在HTML中指定编码 <meta charset="utf-8">;

    2.无需使用 @charset 指定样式表的编码,它默认为 UTF-8;

    一律使用小写字母

    省略外链资源 URL 协议部分

    省略外链资源 URL 中的 http / https 协议,使 URL 成为相对地址,其他协议的不能省(ftp)。

    统一注释

    HTML注释:模块注释,区块注释;

    css注释:组件块和子组件块以及声明块之间使用一空行分割,子组件块之间三空行分隔。

    js注释:单行注释,多行注释,函数、方法注释,文件注释。

    2.html

    遵循html标准和语义,尽量使用最少的标签并保持最小的复杂度。

    2.1 通用约定

    标签

    * 自闭合标签,无需闭合(例如:img , input , br , hr 等);

    * 可选的闭合标签,需闭合(例如</li> 或 </body> 等);

    * 尽量减少标签数量;

    Class 与 ID

    * class应以功能或内容命名,不以表现形式命名;

    * class 与 id 单词字母小写,多个单词组成时,采用中划线 -  分隔;

    * 使用唯一的 id 作为 js ,同时避免创建无样式信息的class;

    属性顺序

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

    id , class , name , data-xxx , src , for , type , href , title  , alt , aria-xxx , role.

    引号

    属性的定义,统一使用双引号。

    嵌套

    a 不允许嵌套 div 这种约束属于语义嵌套约束,与之区别的约束还有严格嵌套约束,比如 a 不允许嵌套 a 。

    严格嵌套约束在所有的浏览器下都不被允许;而语义嵌套约束,浏览器大多数会容错处理,生成的文档树可能相互不大一样。

    语义嵌套约束

    * <li> 用于 <ul> 或 <ol> 下;

    * <dd> ,<dt> 用于  <dl> 下;

    * <thead> ,<tbody> , <tfoot> ,<tr> ,<td> 用于  <table> 下;

    严格嵌套约束

    * inline-Level 元素,仅可以包含文本或者其他 inline-Level 元素;

    * <a> 里面不可以嵌套交互元素 <a> , <button> , <select> 等;

    * <p>里不可以嵌套块级元素  <div> , <h1> ~ <h6> , <p> , <ul>/<ol>/<li> ,  <dl>/<dt>/<dd> , <form> 等;

    布尔值属性

    html5 规范中 display , checked , selected 等属性不用设置值。

    2.2 语义化

    2.3 HEAD

    3. CSS

    3.1 代码组织

    * 以组件为单位组织代码段;

    * 制定一致的注释规范;

    * 组件块和子组件块以及声明块之间使用一空行分割,子组件块之间三空行分隔。

    Class 与 ID

    * 使用语义化、通用的命名方式;

    * 使用连字符 - 作为ID,class 名称界定符,不要驼峰命名法和下划线;

    * 避免选择器嵌套层级过多,尽量少于3级;

    * 避免选择器, Class , ID 叠加使用;

    声明块格式

    * 选择器分组时,保持独立的选择器独占一行;

    * 声明块的左括号 { 前添加一个空格;

    * 声明块的右括号 } 应独占一行;

    * 声明语句中的 :后应该添加一个空格;

    * 应以分号 ; 结尾;

    * 一般以逗号分隔的属性值,每个逗号后应该添加一个空格;

    * rgb() 、rgba() 、hsl() 、hsla() 或rect() 括号内的值,逗号分隔,但逗号后不添加一个空格;

    * 对于属性值或颜色参数,省略小于1 的小数前面的0;

    * 十六进制值应该全部小写和尽量简写;

    * 避免为 0 指定单位;

    * 将媒体查询放在尽可能相关规则的附近。不要单独打包放在单一文件中,避免遗忘;

    * 不要用 @import ,与 <link> 相比 ,@import 要慢很多,会增加额外请求。替代办法:

      使用多个元素;

      通过 Sass 或 Less 类似的 css 预处理器将多个css编译为一个文件;

      其他 css 文件合并工具;

    链接的样式顺序

    3.2 模块组织

    组件命名

    Components 最少以两个单词命名, 通过 -  分离;

    * 点赞按钮( .like-button )

    * 搜索框( .search-form)

    * 文章卡片( .article-card)

     ELements(元素)

    ELements 是 Components 中的元素

    ELements 的类名尽可能取一个单词;倘若使用两个及以上的单词表达,不应该使用中划线和下划线。

    避免标签选择器。

     Variants 的 classname 应该带有前缀中划线 - ;

  • 相关阅读:
    对Promise的理解?
    对JavaScript垃圾回收机制的理解?
    说明split()与join()函数的区别?
    目标检测评估标准
    训练自己的数据集
    ssd_mobilenet_demo
    c++读取数据
    0XFF
    python读取数据
    快速排序
  • 原文地址:https://www.cnblogs.com/wangqian888/p/11195215.html
Copyright © 2020-2023  润新知