前端开发规范

友云音前端开发规范

  1. 规范目的
    为提高团队协作效率, 便于后台人员添加功能及前端后期优化维护, 输出高质量的文档, 特制订此文档。 本规范文档一经确认, 前端开发人员必须按本文档规范进行前台页面开发。 本文档如有不对戒者不合适的地方请及时提出,经讨论决定后方可更改。
  2. 基本准则
    符合web标准,语义化html, 结构、表现、行为分离, 兼容性优良。 页面性能方面, 代码要求简洁明了有序, 尽可能的减小服务器负载, 保证最快的解析速度。基本的代码编写规范使用ESLint Standard标准进行规范。其余条目按照友云音专有规范进行编写。
  3. 命名规范
    3.1 HTML文件命名
    英文命名,后缀为“.html”。同时将对应UE设计稿放于同目录中,方便测试人员使用。
    3.2 CSS文件命名
    英文命名,后缀为”.css”。
    共用: base.css
    首页: home.css
    框架样式:layoout.css
    其它页面依实际模块需求命名。
    3.3 Javascript文件命名
    英文命名。
    共用:app.js
    其他依实际模块需求命名
  4. HTML规范
    4.1 语法
  5. 所有缩进使用tab进行缩进,不允许存在空格。
  6. 对于属性的定义,确保全部使用双引号,绝不要使用单引号。
  7. 所有编码均遵循xhtml标准,所有标签必须闭合,包括br (<br />) 、hr(<hr />)等。
  8. 充分利用无兼容性问题的html 自身标签,比如span 、em 、strong、optgroup、label 等等。
  9. 语义化html, 如 标题根据重要性用h*(同一页面只能有一个h1), 段落标记用p, 列表用ul。
  10. 在页面中尽量避免使用style 属性,即style=”…”。
  11. 给区块代码及重要功能(比如循环)加上注释,方便后台添加功能 。
  12. 特殊符号使用:尽可能使用代码替代,比如 <( < )、>( > )、空格(   )、»( » ) 等等。
    4.2 doctype
  13. 使用 HTML5 的 doctype 来启用标准模式,建议使用大写的 DOCTYPE。
    4.3 meta标签
  14. meta 标签http-equiv属性的顺序:
    Content-Type -> Content-Language -> ROBOTS -> keywords -> descrition
    4.4 字符编码
  15. 编码统一为:<metahttp-equiv=”Content-Type” content=”text/html; charset=utf-8” />。
    4.5 IE兼容模式
  16. 启用 IE Edge 模式:<meta http-equiv="X-UA-Compatible" content="IE=Edge">

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


<link rel="stylesheet" href="code-guide.css">


<style>
/* ... */
</style>


<script src="code-guide.js"></script>

  1. 引入JS 库文件,文件名须包含库名称及版本号及是否为压缩版,比如jquery-1.4.1.min.js;引入插件,文件名格式为库名称+插件名称,比如jQuery.cookie.js。
    3.不在页面内部通过内联方式添加CSS。即禁止使用style标签添加CSS。
    4.7 属性顺序
  2. HTML 属性应当按照以下给出的顺序依次排列,确保代码的易读性。
    class
    id, name
    data-*
    src, for, type, href
    title, alt
    aria-*, role

<a class="..." id="..." data-modal="toggle" href="#">
Example link
</a>

<input class="form-control" type="text">

<img src="..." alt="...">

4.8 注释

  1. CSS规范
    5.1 语法
  2. 十六进制值应该全部小写,尽量使用全写形式的十六进制值。例如,#ffffff。
  3. 避免为0值指定单位。例如,用 margin: 0; 代替 margin: 0px;。
  4. 大的框架统一采用“wrapper”、“header”、“footer”、“content”、“ sidebar” 。避免使用中文拼音。
  5. 规避class与id命名。
  6. 使用table标签时(尽量避免使用table标签),不要用width、height、cellspacing、cellpadding等table属性直接定义表现。
  7. 减少使用影响性能的属性,比如position:absolute || float
  8. 省略“0”值后面的单位。不要在0值后面使用单位,除非有值。
    5.2 注释
  9. 必须为大区块样式添加注释,小区块适量注释。对于较长的注释,务必书写完整的句子;对于一般性注解,可以书写简洁的短语。

/* Bad example /
/
Modal header */
.modal-header {
...
}

/* Good example /
/
Wrapping element for .modal-title and .modal-close */
.modal-header {
...
}

5.3 命名
1.命名风格使用bootstrap前缀式类名。如.btn .btn-success .panel-base。
2.基于最近的父class或基本(base)class作为新class的前缀。如.btn-base-subbtn。

/* Bad example */
.t { ... }
.red { ... }
.header { ... }

/* Good example */
.tweet { ... }
.important { ... }
.tweet-header { ... }

5.4 属性顺序声明
1.相关的属性声明应当归为一组,并按照下面的顺序排列:
Positioning
Box model
Typographic
Visual

  1. .declaration-order {
  2. /* Positioning */
  3. position: absolute;
  4. top: 0;
  5. right: 0;
  6. bottom: 0;
  7. left: 0;
  8. z-index: 100;
  9. /* Box-model */
  10. display: block;
  11. float: right;
  12. width: 100px;
  13. height: 100px;
  14. /* Typography */
  15. font: normal 13px "Helvetica Neue", sans-serif;
  16. line-height: 1.5;
  17. color: #333;
  18. text-align: center;
  19. /* Visual */
  20. background-color: #f5f5f5;
  21. border: 1px solid #e5e5e5;
  22. border-radius: 3px;
  23. /* Misc */
  24. opacity: 1;
  25. }

5.5 属性简写

  1. 避免过度任意的简写。如.btn代表button,但是.s不能代表任何含义。
    5.6 SASS相关
    1.公共模块使用@include来调用具有相同名称的mixin模块。

  2. JS规范
    6.1 语法

  3. 每行代码结束必须有分号。

  4. 当需要缓存this时必须推荐使用self变量进行缓存。
    6.2 注释

  5. 单行注释使用C++风格: // 这儿是单行注释

  6. 多行注释使用C风格 /* 这儿有多行注释 */
    6.3 变量

  7. 变量命名:驼峰式命名,原生JavaScript变量要求是纯英文字母,首字母须小写。

  8. jQuery变量要求首字符为“_”。

  9. 要求变量集中声明,避免全局变量。

  10. 私有属性、变量和方法以下划线开头。var _privateProperty。

  11. 常量, 使用全部字母大写,单词间下划线()分隔的命名方式,通常用于ajax请求url,和一些不会改变的数据var PLACE_TYPE = 'hotel'。

  12. 总是使用 var(如果用ES6 则let ) 来声明变量。
    6.4 函数

  13. 函数命名:首字母小写驼峰式命名。
    6.5 图表

  14. 各个页面引入图表时,先取内置的公共图表样式,然后根据页面需要扩展配置进行生成。

  15. 屏幕适配规范
    适配主要满足两件事:
    1.各种分辨率的PC端屏幕显示一致。
    2.窗口进行缩放时显示一致。
    友云音项目中目前涉及两类。

  16. 宽度适配
    采用的方式为bootstrap网格适配。

    所有布局列出所有网格。比如

  17. 图表适配
    后续图表通过调用统一方法,获取该图表grid内设置,然后根据不同分辨率进行适配显示。

  18. 测试规范
    8.1 浏览器兼容
    建议测试顺序:FireFox –> IE11 –> IE10 –> IE9 –> Chrome–> Opera,建议安装firebug及IE Tab Plus插件。
    浏览器兼容优先顺序:IE11 –> IE10 –> IE9 –> FireFox –> Chrome –> Opera。

8.2 完成度测试

  1. 页面完成后需要UE配合进行当前页面的完成度测试,给出评估。
  2. 协议规范
    统一采用网关访问协议。URL使用相对路径。
  3. 性能优化规范
    10.1 JS层:
  4. 尽量避免使用存在兼容性及消耗资源的方法戒属性,比如eval( ) & innerText。
  5. 避免不必要的 DOM 操作
    浏览器遍历 DOM 元素的代价是昂贵的。最简单优化 DOM 树查询的方案是,当一个元素出现多次时,将它保存在一个变量中,就避免多次查询 DOM 树了。

// Recommended
var myList = "";
var myListHTML = document.getElementById("myList").innerHTML;

for (var i = 0; i < 100; i++) {
myList += "<span>" + i + "</span>";
}

myListHTML = myList;

// Not recommended
for (var i = 0; i < 100; i++) {
document.getElementById("myList").innerHTML += "<span>" + i + "</span>";
}

  1. 缓存数组长度
    循环无疑是和 JavaScript 性能非常相关的一部分。通过存储数组的长度,可以有效避免每次循环重新计算。
    注: 虽然现代浏览器引擎会自动优化这个过程,但是不要忘记还有旧的浏览器。

var arr = new Array(1000),
len, i;
// Recommended - size is calculated only 1 time and then stored
for (i = 0, len = arr.length; i < len; i++) {

}

// Not recommended - size needs to be recalculated 1000 times
for (i = 0; i < arr.length; i++) {

}

10.2 CSS层:

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

/* Bad example */
span { ... }
.page-container #stream .stream-item .tweet .tweet-header .username { ... }
.avatar { ... }

/* Good example */
.avatar { ... }
.tweet-header .username { ... }
.tweet .avatar { ... }

10.3 HTML层

  1. 减少标签数量

/* Bad example */
<div class=”box”><div class=”welcome”>欢迎访问XXXX:<div class=” integration”>9527 </div></div></div>

/* Good example */
<div class=”box”>
<p>欢迎访问XXXXX网站<span>9527</span></p>

2.避免浏览器发生回流。

10.4 配置层

  1. 路由配置时,按需自定义路由模块,将路由表进行拆分,提高解析速度。
  2. 参考文献
  3. https://wenku.baidu.com/view/b613ecd476a20029bd642d9c.html 常见规范
  4. http://www.runoob.com/bootstrap/bootstrap-css-codeguide-html.html BootstrapCSS规范
  5. http://www.runoob.com/bootstrap/bootstrap-html-codeguide.html BootstrapHTML规范
  6. http://ued.lanrentuku.com/wd/css-guifan-qianduan.html
  7. https://www.w3cschool.cn/webdevelopment/ow89nozt.html
  8. http://alloyteam.github.io/CodeGuide/ 腾讯alloy前端规范
  9. https://github.com/styleguide github前端规范
  10. https://github.com/ecomfe/spec 百度前端规范
  11. 常用组件命名
    页面结构:
     容器: container
     页头:header
     内容:content/container
     页面主体:main
     页尾:footer
     导航:nav
     侧栏:sidebar
     栏目:column
     页面外围控制整体布局宽度:wrapper
     左右中:left right center
    导航:
     导航:nav
     主导航:mainbav
     子导航:subnav
     顶导航:topnav
     边导航:sidebar
     左导航:leftsidebar
     菜单:menu
     子菜单:submenu
     标题: title
     摘要: summary
    功能:
     标志:logo
     广告:banner
     登陆:login
     登录条:loginbar
     注册:regsiter
     搜索:search
     功能区:shop
     标题:title
     加入:joinus
     状态:status
     按钮:btn
     滚动:scroll
     标签页:tab
     文章列表:list
     提示信息:msg
     当前的: current
     小技巧:tips
     图标: icon
     注释:note
     指南:guild
     服务:service
     热点:hot
     新闻:news
     下载:download
     投票:vote
     合作伙伴:partner
     友情链接:link
     版权:copyright
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,723评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,485评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,998评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,323评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,355评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,079评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,389评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,019评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,519评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,971评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,100评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,738评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,293评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,289评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,517评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,547评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,834评论 2 345

推荐阅读更多精彩内容