尽量确保文档和模板只包含 HTML
结构,样式都放到样式表里,行为都放到脚本里。
统一两个空格缩进(总之缩进统一即可),不要使用 Tab
或者 Tab
、空格混搭。
使用不带 BOM
的 UTF-8 编码。
<meta charset="utf-8">
;@charset
指定样式表的编码,它默认为 UTF-8
(参考 @charset);
- <!-- Recommended -->
- <img src="google.png" alt="Google">
- <!-- Not recommended -->
- <A HREF="/">Home</A>
- /* Recommended */
- color: #e5e5e5;
- /* Not recommended */
- color: #E5E5E5;
省略外链资源(图片及其它媒体资源)URL 中的 http
/ https
协议,使 URL 成为相对地址,避免Mixed Content 问题,减小文件字节数。
其它协议(ftp
等)的 URL 不省略。
- <!-- Recommended -->
- <script src="//www.google.com/js/gweb/analytics/autotrack.js"></script>
- <!-- Not recommended -->
- <script src="http://www.google.com/js/gweb/analytics/autotrack.js"></script>
- /* Recommended */
- .example {
- background: url(//www.google.com/images/example);
- }
- /* Not recommended */
- .example {
- background: url(http://www.google.com/images/example);
- }
通过配置编辑器,可以提供快捷键来输出一致认可的注释模式。
模块注释
- <!-- 文章列表列表模块 -->
- <div class="article-list">
- ...
- </div>
区块注释
- <!--
- @name: Drop Down Menu
- @description: Style of top bar drop down menu.
- @author: Ashu(Aaaaaashu@gmail.com)
- -->
组件块和子组件块以及声明块之间使用一空行分隔,子组件块之间三空行分隔;
- /* ==========================================================================
- 组件块
- ============================================================================ */
- /* 子组件块
- ============================================================================ */
- .selector {
- padding: 15px;
- margin-bottom: 15px;
- }
- /* 子组件块
- ============================================================================ */
- .selector-secondary {
- display: block; /* 注释*/
- }
- .selector-three {
- display: span;
- }
必须独占一行。//
后跟一个空格,缩进与下一行被注释说明的代码一致。
避免使用 /*...*/
这样的多行注释。有多行注释内容时,使用多个单行注释。
- /**
- * 函数描述
- *
- * @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
- };
- }
文件注释用于告诉不熟悉这段代码的读者这个文件中包含哪些东西。 应该提供文件的大体内容, 它的作者, 依赖关系和兼容性信息。如下:
- /**
- * @fileoverview Description of file, its uses and information
- * about its dependencies.
- * @author user@meizu.com (Firstname Lastname)
- * Copyright 2015 Meizu Inc. All Rights Reserved.
- */
代码验证不是最终目的,真的目的在于让开发者在经过多次的这种验证过程后,能够深刻理解到怎样的语法或写法是非标准和不推荐的,即使在某些场景下被迫要使用非标准写法,也可以做到心中有数。