前端开发规范及开发文档
<p>关注公众号: 微信搜索<code> 前端工具人</code> ; 收货更多的干货</p><p>团队之间一致的开发习惯;统一的代码风格;对团队合作、工作效率以及后期的维护有着很大的提高;</p>
<h2 id="为什么需要-前端开发规范">为什么需要 “前端开发规范”</h2>
<p>规范不是强制性的,对代码的编写和程序的运行不会有致命的问题,但是没有规范会有一系列的问题,比如:</p>
<ul>
<li>缺乏规范,第一个问题就是团队编码风格不一,增加了成员之间代码的阅读成本,加大了团队协作成本和维护成本;</li>
<li>随着团队人员的变化(多人开发一个应用,或者应用更换开发人员),如果缺乏规范,项目可能会变得一团糟,甚至失控;</li>
<li>即便是个人开发,规范也是需要的,当把项目转给其他人的时候,如果有规范的话,会大大降低阅读成本。<br>
...<br>
所以,建立一套适合团队的开发规范是很受用的。</li>
</ul>
<h2 id="a基本原则">A.基本原则</h2>
<ul>
<li>符合<code>web</code>标准<code>(UTF-8,HTML5)</code></li>
<li>语义化<code>html</code>(<code>HTML5</code>新增要求,减少<code>div</code>和<code>span</code>等无特定语义的标签使用)</li>
<li>结构表现行为分离(<code>HTML-CSS-JS</code>代码分离,不同行为代码高内聚低耦合)</li>
<li>兼容性优良(早期版本浏览器兼容,移动端和<code>PC</code>端设备兼容)</li>
<li>页面性能方面(减少请求次数,例如使用精灵图和<code>sass\less</code>语法)</li>
<li>代码要求简洁明了有序,尽可能的减小服务器负载,保证最快的解析速度(减小<code>repaint</code>和<code>reflow</code>).</li>
</ul>
<h2 id="b文件命名规范">B.文件命名规范</h2>
<p>1、<code>html,css,js,lib,images</code>文件均存放至项目的目录中。如果使用相关前端框架,根据框架的文件格式进行合理布局。</p>
<p>2、所有文件夹及文件使用英文命名(避免使用中文路径)。</p>
<p>3、<code>html</code>文件:入口文件使用<code>index.html</code>。如果有对应的设计组设计原稿,需要将对应的设计稿和<code>html</code>文件命名一致并合理存放。</p>
<p>4、<code>css</code>文件命名:后缀<code>.css</code>。通用<code>initial.css</code>,初始化<code>base.css</code>,首页<code>index.css</code>,其他页面按照对应的<code>html</code>命名。</p>
<p>5、<code>Js</code>文件命名:英文命名,后缀<code>.js</code>.通用<code>common.js</code>,初始化<code>base.js</code>。 其他页面按照对应的<code>html</code>命名。</p>
<h2 id="chtml规范">C.HTML规范</h2>
<p>1、文档类型声明及编码:统一为<code>html5</code>声明类型。书写时利用IDE实现层次分明的缩进(默认缩进4空格)。</p>
<p>2、非特殊情况下<code>CSS</code>文件放在<code>body</code>部分<code><meta></code>标签后。非特殊情况下大部分<code>JS</code>文件放在 <code><body></code> 标签尾部(如果需要界面未加载前执行的代码可以放在head标签后)避免行内JS和CSS代码。</p>
<p>3、所有编码需要遵循<code>html(XML)</code>标准,标签&属性&属性命名必须由小写字母及下划线数字组成,且所有标签必须闭合,包括<code>br(),hr()</code>等。属性值用双引号。</p>
<p>4、引入<code>JS</code>库文件,文件名须包含库名称及版本号及是否为压缩版,比如<code>jquery-1.4.1.min.js</code>。引入插件,文件名格式为库名称+插件名称,比如<code>jQuery.bootstrap.js</code>。</p>
<p>5、书写页面过程中,请考虑向后扩展性。<code>class&id</code>参见<code>css</code>书写规范.</p>
<p>6、需要为<code>html</code>元素添加自定义属性的时候,首先要考虑下有没有默认的已有的合适标签去设置,如果没有,可以使用须以<code>"data-"</code>为前缀来添加自定义属性,避免使用<code>"data:"</code>等其他命名方式。</p>
<p>7、语义化<code>html</code>,如标题根据重要性用h*(同一页面只能有一个<code>h1</code>),段落标记用<code>p</code>,列表用<code>ul</code>,内联元素中不可嵌套块级元素。</p>
<p>8、尽可能减少<code>div</code>多层级嵌套。</p>
<p>9、书写链接地址时,必须避免重定向,例如:<code>href="http://myVue.com/"</code>,即须在<code>URL</code>地址后面加上<code>“/”</code>;</p>
<p>10、在页面中尽量避免使用<code>style</code>属性,即<code>style="…"</code>。</p>
<p>11、必须为含有描述性表单元素<code>(input,textarea)</code>添加<code>label</code>,如姓名:须写成:姓名:</p>
<p>12、能以背景形式呈现的图片,尽量写入<code>css</code>样式中。</p>
<p>13、重要图片必须加上<code>alt</code>属性。给重要的元素和截断的元素加上<code>title</code>。</p>
<p>14、给区块代码及重要功能(比如循环)加上注释,方便后台添加功能。</p>
<p>15、特殊符号使用:尽可能使用代码替代:比如<code><(<)&>(>)&</code>空格<code>()&»(»)</code>等等。</p>
<h2 id="dcss规范">D.CSS规范</h2>
<p>1、编码规范为<code>utf-8</code>。</p>
<p>2、协作开发及分工:<code>i</code>会根据各个模块,同时根据页面相似程序,事先写**体框架文件,分配给前端人员实现内部结构&表现<code>&</code>行为。共用<code>css</code>文件<code>base.css</code>由<code>i</code>书写,协作开发过程中,每个页面请务必都要引入,此文件包含<code>reset</code>及头部底部样式,此文件不可随意修改。</p>
<p>3、<code>class</code>与<code>id</code>的使用:<code>id</code>是唯一的并是父级的,<code>class</code>是可以重复的并是子级的,所以<code>id</code>仅使用在大的模块上,<code>class</code>可用在重复使用率高及子级中。<code>id</code>原则上都是由我分发框架文件时命名的,为<code>JS</code>预留钩子的除外。</p>
<p>4、为<code>JS</code>预留钩子的命名,请以<code>js_</code>起始,比如:<code>js_hide,js_show</code>。</p>
<p>5、<code>class</code>与<code>id</code>命名:大的框架命名比如<code>header/footer/wrapper/left/right</code>之类的在2中由i统一命名.其他样式名称由小写英文&数字&来组合命名,如<code>i_comment,fontred,width200</code>。避免使用中文拼音,尽量使用简易的单词组合。总之,命名要语义化,简明化</p>
<p>6、规避<code>class</code>与<code>id</code>命名(此条重要,若有不明白请及时与i沟通)<code>:a</code>)通过从属写法规避,示例见<code>d。b</code>)取父级元素<code>id/class</code>命名部分命名,示例见<code>d。c</code>)重复使用率高的命名,请以自己代号加下划线起始,比如<code>i_clear。d)a,b</code>两条,适用于在<code>2</code>中已建好框架的页面,如,要在<code>2</code>中已建好框架的页面代码中加入新的<code>div</code>元素,按a命名法则:...,样式写法:<code>#mainnav.firstnav{.......}</code>按<code>b</code>命名法则:...,样式写法:<code>.main_firstnav{.......}</code></p>
<p>7、<code>css</code>属性书写顺序,建议遵循:布局定位属性<code>--></code>自身属性<code>--></code>文本属性<code>--></code>其他属性.此条可根据自身习惯书写,但尽量保证同类属性写在一起.属性列举:布局定位属性主要包括:<code>display&list-style&position</code>(相应的<code>top,right,bottom,left</code>)<code>&float&clear&visibility&overflow</code>;</p>
<p>自身属性主要包括:<code>width & height & margin & padding & border & background。</code></p>
<p>文本属性主要包括:<code>color & font & text-decoration & text-align & vertical-align & white-space&</code></p>
<p><code>其他&content。</code></p>
<p>8、书写代码前,提高样式重复使用率。</p>
<p>9、充分利用<code>html</code>自身属性及样式继承原理减少代码量。<br>
10、样式表中中文字体名,请务必转码成<code>unicode</code>码,以避免编码错误时乱码。</p>
<p>11、背景图片请尽可能使用精灵图技术,减小<code>http</code>请求,考虑到多人协作开发,精灵图按模块制作。</p>
<p>12、使用<code>table</code>标签时(尽量避免使用<code>table</code>标签),请不要用<code>width/height/cellspacing/cellpadding</code>等<code>table</code>属性直接定义表现,应尽可能的利用<code>table</code>自身私有属性分离结构与表现,如<code>thead,tr,th,td,tbody,tfoot,colgroup,scope。(cellspaing及cellpadding的css</code>控制方法:<code>table{border:0。margin:0。border-collapse:collapse。}tableth,tabletd{padding:0。},base.css</code>文件中我会初始化表格样式)</p>
<p>13、杜绝使用兼容<code>ie8</code>。</p>
<p>14、用<code>png</code>图片做图片时,要求图片格式为<code>png-8</code>格式,若<code>png-8</code>实在影响图片质量或其中有半透明效果,请为<code>ie6</code>单独定义背景:<code>_background:none。_filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=crop,src=’img/bg.png’)</code>。</p>
<p>15、避免兼容性属性的使用,比如<code>text-shadow||css3</code>的相关属性。</p>
<p>16、减少使用影响性能的属性,比如<code>position:absolute||float</code>。</p>
<p>17、必须为大区块样式添加注释,小区块适量注释。</p>
<p>18、代码缩进与格式:建议单行书写,可根据自身习惯,后期优化会统一处理。</p>
<h2 id="e-js书写规范">E. JS书写规范</h2>
<p>1、文件编码统一为<code>utf-8</code>,书写过程过,每行代码结束必须有分号。原则上所有功能均根据<code>XXX</code>项目需求原生开发,以避免网上<code>down</code>下来的代码造成的代码污染(沉冗代码<code>||</code>与现有代码冲突<code>||</code>)。</p>
<p>2、库引入:原则上仅引入<code>jQuery</code>库,若需引入第三方库,须与团队其他人员讨论决定。</p>
<p>3、变量命名:驼峰式命名.原生JS变量要求是纯英文字母,首字母须小写;要求变量集中声明,避免全局变量;私有属性、变量和方法以下划线 _ 开头;常量, 使用全部字母大写,单词间下划线分隔的命名方式;枚举的属性, 使用全部字母大写,单词间下划线分隔的命名方式</p>
<p>4、类命名:首字母大写,驼峰式命名.如<code>MyVue</code>。</p>
<p>5、函数命名:首字母小写驼峰式命名.如<code>myVue()</code>。</p>
<p>6、命名语义化,尽可能利用英文单词或其缩写。</p>
<p>7、尽量避免使用存在兼容性及消耗资源的方法或属性,比如<code>eval_r()&innerText</code>。</p>
<p>8、后期优化中,<code>JS</code>非注释类中文字符须转换成<code>unicode</code>编码使用,以避免编码错误时乱码显示。</p>
<p>9、代码结构明了,加适量注释.提高函数重用率。</p>
<p>10、注重与<code>html</code>分离,减小<code>reflow</code>,注重浏览器性能。</p>
<p>11、注释 (尽量提高代码本身的清晰性、可读性,合理的注释、空行排版等,可以让代码更易阅读、更具美感)</p>
<p>12、利用缓存存放数据、资源压缩、避免高频刷新页面、静态资源上传<code>cdn</code></p>
<p>13、设置响应头<code>cache-control</code>和<code>last-modified</code>(如果两次请求间隔小于<code>5</code>秒,直接返回<code>304</code>,不需要服务器进行处理)</p>
<p>14、Web服务器的负载均衡、请求分发(七层负载均衡的实现)、上传文件使用异步模式</p>
<p>15、将活动页面上的所有可以静态的元素全部静态化,并尽量减少动态元素。通过<code>CDN</code>来抗峰值</p>
<p>16、用户提交之后按钮置灰,禁止重复提交</p>
<p>17、在某一时间段内只允许用户提交一次请求,比如可以采取IP限流</p>
<p>18、图片在一个页面上属于数据量比较大的东西,尽量避免动态数据和图片的顺序渲染,使用图片服务器分离数据和图片(建立独立图片服务器)</p>
<p>19、使用<code>nginx</code>等负载均衡中间件,将请求分布到不同的机器上,避免单个应用持续的处理引起血崩</p>
<h3 id="单行注释">单行注释</h3>
<p>必须独占一行。// 后跟一个空格,缩进与下一行被注释说明的代码一致。</p>
<h3 id="多行注释">多行注释</h3>
<p>避免使用 /<em>...</em>/ 这样的多行注释。有多行注释内容时,使用多个单行注释。</p>
<p>函数/方法注释</p>
<p>函数/方法注释必须包含函数说明,有参数和返回值时必须使用注释标识。;<br>
参数和返回值注释必须包含类型信息和说明;<br>
当函数是内部函数,外部不可访问时,可以使用 <code>@inner </code>标识;</p>
<pre><code class="language-bash">/**
* 函数描述
*
* @param {string} p1 参数1的说明
* @param {string} p2 参数2的说明,比较长
* 那就换行了.
* @param {number=} p3 参数3的说明(可选)
* @return {Object} 返回值描述
*/
function foo(p1, p2, p3) {
var p3 = p3 || 10;
return {
p1: p1,
p2: p2,
p3: p3
};
}
</code></pre>
<h3 id="文件注释">文件注释</h3>
<p>文件注释用于告诉不熟悉这段代码的读者这个文件中包含哪些东西。 应该提供文件的大体内容, 它的作者, 依赖关系和兼容性信息。如下:</p>
<pre><code class="language-bash">/**
* @fileoverview Description of file, its uses and information
* about its dependencies.
* @author user@meizu.com (Firstname Lastname)
* Copyright 2009 Meizu Inc. All Rights Reserved.
*/
</code></pre>
<h2 id="f图片规范">F.图片规范</h2>
<p>1、所有页面元素类图片均放入<code>img</code>文件夹,测试用图片放于<code>demo</code>文件夹。</p>
<p>2、图片格式<code>gif/png/jpg</code>。提倡使用<code>webp</code>文件格式,使用软件进行图片压缩。</p>
<p>3、命名全部用小写英文字母||数字||_的组合,其中不得包含汉字||空格||特殊字符;尽量用易懂的词汇,便于团队其他成员理解。另,命名分头尾两部分,用下划线隔开,比如<code>ad_left01.gif||btn_submit.gif</code>。</p>
<p>4、在保证视觉效果的情况下选择最小的图片格式与图片质量,以减少加载时间。5、尽量避免使用半透明的png图片(若使用,请参考<code>css</code>规范相关说明)。</p>
<p>6、运用<code>css</code>精灵图技术集中小的背景图或图标,减小页面<code>http</code>请求,但注意,请务必在对应的精灵图<code>psd</code>源图中划参考线,并保存至<code>img</code>目录下</p>
<hr>
<h2 id="结尾">结尾</h2>
<p>文章来源: 自己博客文章 <code> https://laijinxian.github.io/2019/03/06/%E5%89%8D%E7%AB%AF%E5%BC%80%E5%8F%91%E8%A7%84%E8%8C%83%E5%8F%8A%E5%BC%80%E5%8F%91%E6%96%87%E6%A1%A3/</code></p>
<p>参考:<code>https://blog.csdn.net/weixin_41697143/article/details/81049778 </code></p><br><br>
来源:https://www.cnblogs.com/ljx20180807/p/14210084.html
頁:
[1]