<!-- 不推荐示例:标签名称大写,或者大小写混合;属性值没有用双引号闭合 --> <IMG src=demo.jpg alt='test' />推荐示例:
<!—推荐示例:标签名称小写;属性值用双引号闭合 --> <img src="demo.jpg" alt="test" />给全部的关键元素定义元素的 id 和 class,便于和 CSS、JavaScript 交互。由于 id 名称和 class 名称有可能做为检索值用在 JavaScript 代码中,因此命名必定
<!-- 不推荐示例:命名简单随意,很难保证命名不重复 --> <div id="Reader"> <div id="introduce" class="Introduce "> … </div> </div>推荐示例:
<!-- 推荐示例:根据语义以及上下层级关系定义名称 --> <div id="reader"> <div id="reader_introduce" class="reader-introduce"> … </div> </div>若是 class 名称仅做为 JavaScript 调用的“钩子”,则可在名称中添加“ js”前缀。
<!--class 名称仅做为 JavaScript 调用的 " 钩子 ",可在名称中添加 "js" 前缀 --> <ul id="js_reader_menu"> <li class="menu-toc js-active">Toc</li> <li class="menu-store js-active">Store</li> <li class="menu-library">Library</li> <li class="menu-news">News</li> </ul>HTML 代码的层级缩进为 4 个空格。若是元素包含子元素,则此元素对应的起始标签和闭合标签分别单独占用一行。
<!-- 不推荐示例:标签树形层级之间没有缩进或者缩进混乱 --> <ul> <li>item1</li><li>item2</li> <li>item3</li><li>item4</li></ul>推荐示例:
<!-- 推荐示例:利用缩进体现元素的层级关系 --> <ul> <li>item1</li> <li>item2</li> <li>item3</li> <li>item4</li> </ul>给 HTML 代码添加必要的注释。页面 HTML 代码的注释不宜过多,添加的原则是在保证代码维护性的基础上尽可能让 HTML 代码简洁。基于这样的原则,能够在页面的公共部分(如页面的头部、尾部以及侧边栏等)、页面常常变化的部分(如广告栏)以及须要后端代码注入的部分添加注释。注释添加的位置在要注释的代码上部并单独占用一行,不要在代码行的后面直接添加。
<body> <!--main header--> <div id="reader_header"> ... </div> <!--main content--> <div id="reader_content"> ... <!-- 动态绑定列表 : toc--> <ul id="reader_content_toc"> </ul> </div> <!--main footer--> <div id="reader_footer"> ... </div> </body>
.reader-content-title { ... }为了不 class 命名的重复,命名时取父元素的 class 名做为前缀。
/* 父元素的样式声明 */ .reader-content { ... } /* 子元素的 class 名称以父元素中的 class 名称做为前缀 */ .reader-content-body { ... }在 CSS 样式定义中,左大括号放置在选择器的同一行,并和选择器之间添加一个空格分隔,在保证可读性的基础上缩短代码的行数;在样式声明中,属性名称和值之间用一个空格分隔,提升代码可读性。
不推荐示例:javascript
/* 不推荐示例:CSS 样式定义中的左大括号单独占一行;样式声明没有缩进或缩进混乱;属性名 称和值之间没有用空格分隔 */ .reader-content-title { background:#FFF; ... }推荐示例:
/* CSS 样式定义中的左大括号放置在选择器的同一行;样式声明中属性名称和值之间用一个空格 分隔 */ .reader-content-title { background: #FFF; ... }多个选择器具备相同的样式声明时,每一个选择器应该单独占一行,便于阅读和维护。
/* 不推荐示例:多个选择器具备相同的样式声明时,全部选择器放置于同一行 */ h1,h2,h3 { font-weight: normal; line-height: 1.2; }推荐示例:
/* 推荐示例:多个选择器具备相同的样式声明时,每一个选择器应该单独占一行 */ h1, h2, h3 { font-weight: normal; line-height: 1.2; }样式声明的顺序按字母顺序排列,不考虑浏览器前缀。单纯靠手写代码并保证样式声明按照必定的顺序是不现实的。建议使用一些 CSS 美化工具作样式声明排序的工做。
/* 样式声明的顺序以字母序排列 */ .reader-content-title { background: #FFF; border: 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; color: black; text-align: center; }样式定义按照模块来分组,相同模块的样式定义放在一块儿,不一样模块的定义之间用一个空行分割。
/* reader header*/ .reader-header-title { ... } .reader-header-introduce { ... } /*reader footer*/ .reader-footer-copyright{ ... } .reader-footer-links { ... }CSS 中的注释很是重要,能对 CSS 样式起到解释和说明的做用,提升了 CSS代码的可读性。有些开发者可能担忧添加过多的注释会让 CSS 文件行数增多,其实不用担忧,能够在发布网站的时候对 CSS 文件进行压缩,这个过程当中会去掉全部的注释。在 CSS 样式文件中添加注释主要有两种类型:文件头部的文件信息注释和正文中的解释说明性注释。文件信息通常包括文件版本、版权信息以及做者等;解释说明性的注释有给模块的注释和单独给选择器的注释,模块的注释则须要添加注释代表模块样式定义的开始和结束,CSS 选择器的注释须要添加在选择器的上一行,而不是和选择器相同一行。
/* 注释规范说明:文件头部的文件信息注释 */ /*! * reader content v1.0 * * Copyright 2012 * Dual licensed under the MIT or GPL Version 2 licenses. * * Designed and built by dangjian */ /* 注释规范说明:模块样式定义的开始和结束 */ /* Content containers start */ /* 注释规范说明:注释须要添加在选择器的上一行,而不是和选择器相同一行 */ /* content title */ .reader-content-title { ... } ... /* Content containers end */
// 不推荐示例:变量命名首字母大写 var ReaderBookmark = 'bookmark'; // 不推荐示例:变量命名意义不明确 var object = {}; // 不推荐示例:变量命名以类型做为前缀 var strName = 'Note'; // 不推荐示例:变量命名使用语义不明确的缩写 var newNT = function(){ … }
// 推荐示例:变量命名语义明确 var bookmarkDefaultTitle = 'Untitled Bookmark';
Reader.Content = function(){ // 私有变量 var info, title; // 私有方法 var getContent = function(){ ... }; return { // 公有方法 SetTitle: function(contentTitle){ title = contentTitle; }, // 公有属性 ContentInfo: info } }();jQuery 框架在项目中使用普遍,推荐给 jQuery 类型变量添加“$”做为前缀。
var $tocTitle = $('.reader-toc-title');左大括号应该在行的结束位置,而不该该单独一行,由于这样增长了没必要要的行数。应该一直使用大括号括起逻辑块,
// 左大括号应该在行的结束位置,而不该该单独一行 for (var i=0; i<100; i++) { doSomething(i); } // 应该一直使用大括号括起逻辑块,即便逻辑只有一行 var isFound = false; if (statement) { isFound = true; }
var content = '<span id="main_content">…';
doSomething(myChar, 0, 1); while (x === y){ ... }
return { a + b }
// return 后面会添加一个分号 return ; { a + b }
var b = function(){ return function(){return 1} } var a = b (function(){ ... })()
var b = function(){ return function(){return 1} } var a = b(function(){ ... })()
/* 文件头部的文件信息注释 */ /*! * reader content v1.0 * * Copyright 2012 * Dual licensed under the MIT or GPL Version 2 licenses. * * Designed and built by dangjian */ Reader.Content = (function(){ return { // reader 初始化 Init: function(){ ... }; }; })();