您好,欢迎访问三七文档
福宝童趣201661区项目前端代码规范代码规范六一区项目前端组文档控制更改记录日期作者版本更改参考2016-8-151.0审阅姓名职位分发拷贝号姓名地点1234目录代码规范前端编码规范(1)——一般规范这是一份旨在增强团队的开发协作,提高代码质量和打造开发基石的编码风格规范,其中包含了HTML,JavaScript和CSS/SCSS这几个部分。我们知道,当一个团队开始指定并实行编码规范的话,错误就会变得更加显而易见。如果一段特定的代码不符合规范的话,它有可能只是代码风格错误,而也有可能会是bug。早期指定规范就使得代码审核得以更好的开展,并且可以更精确的地定位到错误。只要开发者们能够保证源代码源文件都严格遵循规范,那接下去所使用的混淆、压缩和编译工具则可投其所好不尽相同。文件命名规范在web项目中,所有的文件名应该都遵循同一命名约定。以可读性而言,减号(-)是用来分隔文件名的不二之选。同时它也是常见的URL分隔符(i.e.//example.com/blog/my-blog-entryor//s.example.com/images/big-black-background.jpg),所以理所当然的,减号应该也是用来分隔资源名称的好选择。请确保文件命名总是以字母开头而不是数字。而以特殊字符开头命名的文件,一般都有特殊的含义与用处(比如compass[1]中的下划线就是用来标记跳过直接编译的文件用的)。资源的字母名称必须全为小写,这是因为在某些对大小写字母敏感的操作系统中,当文件通过工具压缩混淆后,或者人为修改过后,大小写不同而导致引用文件不同的错误,很难被发现。还有一些情况下,需要对文件增加前后缀或特定的扩展名(比如.min.js,.min.css),抑或一串前缀(比如3fa89b.main.min.css)。这种情况下,建议使用点分隔符来区分这些在文件名中带有清晰意义的元数据。不推荐推荐推荐协议规范不要指定引入资源所带的具体协议。当引入图片或其他媒体文件,还有样式和脚本时,URLs所指向的具体路径,不要指定协议部分(http:,https:),除非这两者协议都不可用。不指定协议使得URL从绝对的获取路径转变为相对的,在请求资源协议无法确定时非常好用,而且还能为文件大小节省几个字节。不推荐推荐不推荐推荐书写规范文本缩进一次缩进两个空格。注释注释是你自己与你的小伙伴们了解代码写法和目的的唯一途径。特别是在写一些看似琐碎的无关紧要的代码时,由于记忆点不深刻,注释就变得尤为重要了。编写自解释代码只是一个传说,没有任何代码是可以完全自解释的。而代码注释,则是永远也不嫌多。当你写注释时一定要注意:不要写你的代码都干了些什么,而要写你的代码为什么要这么写,背后的考量是什么。当然也可以加入所思考问题或是解决方案的链接地址。不推荐推荐一些注释工具可以帮助你写出更好的注释。JSDoc或YUIDoc就是用来写JavaScript注释用的。你甚至可以使用工具来为这些注释生成文档,这也是激励开发者们写注释的一个好方法,因为一旦有了这样方便的生成文档的工具,他们通常会开始花更多时间在注释细节上。代码走查对于比较宽松自由的编程语言来说,严格遵循编码规范和格式化风格指南就显得极为重要。遵循规范固然很好,但是有自动化流程来确保其执行情况,岂不更佳。Trustisgood,controlisbetter.对于JavaScript,建议使用JSLint或JSHint。前端编码规范(2)——HTML规范文档类型推荐使用HTML5的文档类型申明:!DOCTYPEhtml.(建议使用text/html格式的HTML。避免使用XHTML。XHTML以及它的属性,比如application/xhtml+xml在浏览器中的应用支持与优化空间都十分有限)。HTML中最好不要将无内容元素[1]的标签闭合,例如:使用br而非br/HTML验证一般情况下,建议使用能通过标准规范验证的HTML代码,除非在性能优化和控制文件大小上不得不做出让步。使用诸如W3CHTMLvalidator这样的工具来进行检测。规范化的HTML是显现技术要求与局限的显著质量基线,它促进了HTML被更好地运用。不推荐推荐省略可选标签HTML5规范中规定了HTML标签是可以省略的。但从可读性来说,在开发的源文件中最好不要这样做,因为省略标签可能会导致一些问题。省略一些可选的标签确实使得页面大小减少,这很有用,尤其是对于一些大型网站来说。为了达到这一目的,我们可以在开发后期对页面进行压缩处理,在这个环节中这些可选的标签完全就可以省略掉了。脚本加载出于性能考虑,脚本异步加载很关键。一段脚本放置在head内,比如scriptsrc=main.js/script,其加载会一直阻塞DOM解析,直至它完全地加载和执行完毕。这会造成页面显示的延迟。特别是一些重量级的脚本,对用户体验来说那真是一个巨大的影响。异步加载脚本可缓解这种性能影响。如果只需兼容IE10+,可将HTML5的async属性加至脚本中,它可防止阻塞DOM的解析,甚至你可以将脚本引用写在head里也没有影响。如需兼容老旧的浏览器,实践表明可使用用来动态注入脚本的脚本加载器。你可以考虑yepnope或labjs。注入脚本的一个问题是:一直要等到CSS对象文档已就绪,它们才开始加载(短暂地在CSS加载完毕之后),这就对需要及时触发的JS造成了一定的延迟,这多多少少也影响了用户体验吧。终上所述,兼容老旧浏览器(IE9-)时,应该遵循以下最佳实践。脚本引用写在body结束标签之前,并带上async属性。这虽然在老旧浏览器中不会异步加载脚本,但它只阻塞了body结束标签之前的DOM解析,这就大大降低了其阻塞影响。而在现代浏览器中,脚本将在DOM解析器发现body尾部的script标签才进行加载,此时加载属于异步加载,不会阻塞CSSOM(但其执行仍发生在CSSOM之后)。所有浏览器中,推荐只在现代浏览器中,推荐语义化根据元素(有时被错误地称作“标签”)其被创造出来时的初始意义来使用它。打个比方,用heading元素来定义头部标题,p元素来定义文字段落,用a元素来定义链接锚点,等等。有根据有目的地使用HTML元素,对于可访问性、代码重用、代码效率来说意义重大。以下示例列出了一些的语义化HTML主要情况:不推荐推荐不推荐推荐尽量用alt标签去描述图片,设想你需要对于那些只能通过语音或者看不见图片的用户表达图片到底是什么。不推荐推荐关注点分离理解web中如何和为何区分不同的关注点,这很重要。这里的关注点主要指的是:信息(HTML结构)、外观(CSS)和行为(JavaScript)。为了使它们成为可维护的干净整洁的代码,我们要尽可能的将它们分离开来。严格地保证结构、表现、行为三者分离,并尽量使三者之间没有太多的交互和联系。就是说,尽量在文档和模板中只包含结构性的HTML;而将所有表现代码,移入样式表中;将所有动作行为,移入脚本之中。在此之外,为使得它们之间的联系尽可能的小,在文档和模板中也尽量少地引入样式和脚本文件。清晰的分层意味着:不使用超过一到两张样式表(i.e.main.css,vendor.css)不使用超过一到两个脚本(学会用合并脚本)不使用行内样式(style.no-good{}/style)不在元素上使用style属性(hrstyle=border-top:5pxsolidblack)不使用行内脚本(scriptalert('nogood')/script)不使用表象元素(i.e.b,u,center,font,b)不使用表象class名(i.e.red,left,center)不推荐推荐HTML内容至上不要让非内容信息污染了你的HTML。现在貌似有一种倾向:通过HTML来解决设计问题,这是显然是不对的。HTML就应该只关注内容。HTML标签的目的,就是为了不断地展示内容信息。不要引入一些特定的HTML结构来解决一些视觉设计问题不要将img元素当做专门用来做视觉设计的元素以下例子展示了误将HTML用来解决设计问题的这两种情况:不推荐推荐图片和SVG图形能被引入到HTML中的唯一理由是它们呈现出了与内容相关的一些信息。不推荐推荐Type属性省略样式表与脚本上的type属性。鉴于HTML5中以上两者默认的type值就是text/css和text/javascript,所以type属性一般是可以忽略掉的。甚至在老旧版本的浏览器中这么做也是安全可靠的。不推荐推荐可用性如果HTML5语义化标签使用得当,许多可用性问题已经引刃而解。ARIA规则在一些语义化的元素上可为其添上默认的可用性角色属性,使用得当的话已使网站的可用性大部分成立。假如你使用nav,aside,main,footer等元素,ARIA规则会在其上应用一些关联的默认值。更多细节可参考ARIAspecification另外一些角色属性则能够用来呈现更多可用性情景(i.e.role=tab)。TabIndex在可用性上的运用检查文档中的tab切换顺序并传值给元素上的tabindex,这可以依据元素的重要性来重新排列其tab切换顺序。你可以设置tabindex=-1在任何元素上来禁用其tab切换。当你在一个默认不可聚焦的元素上增加了功能,你应该总是为其加上tabindex属性使其变为可聚焦状态,而且这也会激活其CSS的伪类:focus。选择合适的tabindex值,或是直接使用tabindex=0将元素们组织成同一tab顺序水平,并强制干预其自然阅读顺序。微格式在SEO和可用性上的运用如果SEO和可用性环境条件允许的话,建议考虑采用微格式。微格式是通过在元素标签上申明一系列特定数据来达成特定语义的方法。谷歌、微软和雅虎对如何使用这些额外的数据一定程度上的达成一致,如果正确的使用,这将给搜索引擎优化带来巨大的好处。你可以访问schema.org获得更多内容细节。看一个电影网站的简单例子:不带微格式带有微格式ID和锚点通常一个比较好的做法是将页面内所有的头部标题元素都加上ID.这样做,页面URL的hash中带上对应的ID名称,即形成描点,方便跳转至对应元素所处位置。打个比方,当你在浏览器中输入URL,浏览器将定位至以下H3上。格式化规则在每一个块状元素,列表元素和表格元素后,加上一新空白行,并对其子孙元素进行缩进。内联元素写在一行内,块状元素还有列表和表格要另起一行。(如果由于换行的空格引发了不可预计的问题,那将所有元素并入一行也是可以接受的,格式警告总好过错误警告)。推荐HTML引号使用双引号(“”)而不是单引号(”)。不推荐推荐前端编码规范(3)——CSS和Sass(SCSS)规范IDandclassnamingID和class(类)名总是使用可以反应元素目的和用途的名称,或其他通用名称。代替表象和晦涩难懂的名称。应该首选具体和反映元素目的的名称,因为这些是最可以理解的,而且发生变化的可能性最小。通用名称只是多个元素的备用名,他们兄弟元素之间是一样的,没有特别意义。区分他们,使他们具有特殊意义,通常需要为“帮手”。尽管class(类)名和ID的语义化对于计算机解析来说没有什么实际的意义,语义化的名称通常是正确的选择,因为它们所代表的信息含义,不包含表现的限制。不推荐推荐合理的避免使用ID一般情况下ID不应该被应用于样式。ID的样式不能被复用并且每个页面中你只能使用一次ID。使用ID唯一有效的是确定网页或整个站点中的位置。尽管如此,你应该始终考虑使用class,而不是id,除非只使用一次。不推荐推荐另一个反对使用ID的观点是含有ID选择器权重很高。一个只包含一个ID选择器权重高于包含1000个class(类)名的选择器,这使得它很奇怪。CSS选择器中避免标签名当构建选择器时应该使用清晰,准确和有语义的class(类)名。不要使用标签选择器
本文标题:前端代码规范
链接地址:https://www.777doc.com/doc-5330161 .html