标准

WEB开发标准是一系列标准的集合, 包含HTML结构标准CSS表现标准JS行为标准代码标准标准测试

目标

WEB开发流程统一标准化,实现页面结构、表现、行为适当分离,提高页面易维护性,易拓展性。

遵循

  • 结构标准:HTML5
  • 表现标准:CSS2、CSS3(渐进增强)
  • 行为标准:ECMAScript 262
  • 代码标准:HTML编码规范、CSS编码规范、JS编码规范
  • 标准测试:html validator、csslint、jshint

HTML编码规范

1. 使用标准文档DTD

<!DOCTYPE html>

2. 结构、样式、行为分离

  • 内嵌样式移入到相应的样式文件中
  • 内嵌脚本移入到相应的脚本文件中
  • 除非需要动态修改元素样式,否则尽量别写内联样式
  • 除非使用<a href="javascript:void();" ,否则尽量别写内联事件
  • 样式文件使用link标签在head头部引入
  • 脚本文件使用script标签在body结束标签前引入

3. 标签

  • 标签名、属性名小写
  • 属性值双引号括起来
  • style、link的type属性没必要指定,默认为text/css
  • script的type属性没必要指定,默认为text/javascript
  • 空标签无自关闭斜线无结束标签,其它标签务必包含开始、结束标签

空标签: area, base, br, col, command, embed, hr, img, input, keygen, link, meta, param, source, track, wbr

4. 缩进、换行

  • 子元素相对于父元素缩进4个空格
  • 块元素、列表元素、表格元素放在新行

5. 注释

按模块添加注释,解释清楚是什么。

<!--XX模块 START, 我是什么-->
<div class="module">
....
</div>
<!--XX模块 END -->

6. 代码有效性

使用html validator工具,检查代码。

CSS编码规范

1. id、class命名

  • 名字小写
  • 以破折号“-”进行分隔: .module-title

2. 样式属性、属性值

缩进四个空格, 尽量使用缩写

/* Don't */
.demo {
margin-top: 2px;
margin-right: 3px;
margin-bottom: 4px;
margin-left:;
} /* Better */
.demo {
margin: 2px 3px 4px 0;
}

属性名后紧跟“:”

属性值前有一空格,后面以“;”结束

属性值为0,不加单位

十六进制颜色值,尽量使用三个字符 #fff, 非#ffffff

url()中不使用引号

.demo {
backgound-image: url(/your/path/img);
}

3. 样式顺序

定位相关,盒模型相关,其它

.demo {
position: absolute;
top:;
left:; width: 50px;
height: 50px;
border: 1px solid #ddd; color: #fff;
}

4. 选择器

尽量不使用!important,权重最高

尽量不使用id选择器,权重比较高

尽量不使用元素标签名、id、class进行组合

/* Don't */
#header.title {
...
} /* Better */
.title {
...
}

样式针对多个选择器,每个选择器占一行

.btn,
.txt,
.hover {
....
}

5. Better CSS Hack

利用IE条件注释,在html标签的class里标识ie版本,但是尽量避免使用,且请新建一个hack.css专属文件存放hack样式。

<!--[if lt IE 7]> <html class="ie6 oldie"> <![endif]-->
<!--[if IE 7]> <html class="ie7 oldie"> <![endif]-->
<!--[if IE 8]> <html class="ie8 oldie"> <![endif]-->
<!--[if IE 9]> <html class="ie9"> <![endif]-->
<!--[if !IE]><!--><html> <!--<![endif]-->

.ie9 .demo{
...
}
.ie8 .demo{
...
}
.ie7 .demo{
...
}
.ie6 .demo{
...
}

6. Not Recommand CSS Hack

下面hack方法前提是浏览器标准模式

  • “_″  下划线是IE6专有的hack
  • “+″  下划线是IE6/IE7 生效
  • “\9″ IE6/IE7/IE8/IE9/IE10 生效
  • “\0″ IE8/IE9/IE10/Opera 生效
  • “\9\0″ IE9/IE10 生效

这些hack方法,一般直接在原样式中混合使用,大量的hack方法,势必会造成css代码混乱,维护起来困难。

7. 注释

按模块编写注释,解释清楚做了什么

/*XX模块 START, 我做了什么*/
.module {
...
} .module .title {
...
} .module .content {
...
}
/*XX模块 END*/

8. 代码有效性

使用csslint工具,检查代码。

Javascript编码规范

1. 变量、函数

缩进四个空格

变量名、函数名使用驼峰式命名: subTitle

局部变量声明务必使用var

全局变量、枚举变量、常量全部大写,且注释注明

语句结束以“;”结尾

变量声明提前并集中

//我是做什么的
function createAudit(){ var startTime,
endTime,
auditType,
timeSpace,
progress = 0; ...
}

2. 异常处理

做异常处理,界面出错,给予用户友好提示

try{
//Do something
}catch(e){
//友好提示
}

3. eval()

只用于反序列化

4. 多行字符串

var myStr = 'blablablablablabla' +
'hlahlahlahlahlahlahla' +
'xlaxlaxlaxlaxlaxlaxla' +
'slaslaslaslaslaslasla';

5. 定义数组、对象

/*Don't*/
var arr = new Arr,
obj = new Object; /*Better*/
var arr = [],
obj = {};

6. 不修改内置对象方法、属性

不要尝试修改内置对象方法、属性,可以建立统一接口来维护公用函数。

/*Don't*/
String.prototype.newFunc = function(){ }

7. 字符串

使用单引号更好,html中使用双引号

8. 代码格式化

大括号

分号会被隐士插入到代码中,大括号和前面的代码放在同一行

if (boolean) {
//...
} else {
//...
}

数组、对象初始化

var arr = [
someVal,
anotherVal,
anotherVal,
anotherVal,
anotherVal //不要再这里加逗号,ie7,ie8会报错
]; var obj = {
someOpt: someVal,
anotherOpt: anotherVal,
anotherOpt: function () { } //不要再这里加逗号,ie7,ie8会报错
};

函数参数

尽可能将所有函数参数写在同一行,但为了保持可读性,一行超过80个字符可适当换行,甚至每个参数独立一行

very.very.very.very.lon.long.func = function (
someOpt, someOpt
anotherOpt) {
//....
} function foo (veryLongLongVariable,
veryLongLongVariable) {
//...
} function foo (
veryLongLongLongLongVariable,
veryLongLongLongLongVariable) {
//...
}

if条件,三元操作符

if (someLongLongLongVariable &&
anotherLongLongVariable) {
//...
} var y = a ?
someLongLongVariable : anotherLongLongVariable;

9. 注释

全局变量、常量、函数添加注释

10. 代码有效性

使用jshint工具,检查代码。

遵循这些规则--改进这些规则--不能没有规则

WEB编码事项的更多相关文章

  1. 从原理上搞定编码(二)-- Web编码

    周末宅在家里睡完觉就吃饭,吃完饭接着睡觉,这日子过的实在是没劲啊.明明还有计划中的事情没有做, 为什么就是不想去做呢,这样的生活持续下去,必然会成为一个彻头彻尾的loser.上一篇写的 初识编码 ,这 ...

  2. spring Mvc Web 编码相关 [model 到 视图传递数据] (九)

    在某种编码环境,由bean注解的参数可能会发生乱码问题. 即可页面web.xml或其他地方都设备UTF-8, 但还是会有这样的问题. 首先不要使用model传到视图的数据. 第二,不要request. ...

  3. ASP.NET Core 编码、web编码、网页编码 System.Text.Encodings.Web

    System.Text.Encodings.Web 空间包含表示 Web 编码器的基类.表示 HTML.JavaScript 和 Url 字符编码的子类,以及表示仅允许编码特定字符.字符范围或码位的筛 ...

  4. 主机访问 虚拟机web注意事项

    在这里, 我通过NAT的方式, 通过主机访问虚拟机. 需要做的是, 将主机中访问的端口, 映射为虚拟机的'编辑->虚拟网络编辑器->vmnet8', 如下图 在弹出的'映射传入端口'界面中 ...

  5. web编码(转)

    问题2.浏览器编码方式是根据“响应标头-response header”中的键为“Content-Type”的值来自动选择判断,而不会简单的根据你在html中看到的标签值<meta http-e ...

  6. web编码

    1各种编码 A .1 html编码  -HTML标签 this.Response.Write(this.Server.HtmlEncode("<h1>的作用将文本设置为标题样式! ...

  7. 关于解决web编码问题的总结

    网页的编码问题,一般分为两个方面 1 是网页本身的编码格式, 一般不同的操作系统网页文件存取的编码是不一样的, 但一般来说, 新建网页文件一般都和IDE有关,因为我们平时我是使用编辑工具新建网页文件. ...

  8. Pyhon编码事项

    1. 永远不要使用import * Pylint代码审查:Wildcard import XXX 如果函数名重名,或者要导入的内容里面包含了from datetime import datetime, ...

  9. Django国际化注意事项

    涉及两部分内容: py/html文件国际化.外部js文件国际化 步骤 1. settings.py 激活相应的配置 2. 针对py文件,需要注意被翻译代码的编写方式 3. 针对html文件,需要注意被 ...

随机推荐

  1. HDOJ 2014 青年歌手大奖赛_评委会打分

    Problem Description 青年歌手大奖赛中,评委会给参赛选手打分.选手得分规则为去掉一个最高分和一个最低分,然后计算平均得分,请编程输出某选手的得分. Input 输入数据有多组,每组占 ...

  2. 数学概念——I - 数论,线性方程

    I - 数论,线性方程 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit  ...

  3. 关于STM32 定时器 PWM 实时调节占空比时,预装载特性

    最近在调试项目的时候遇到一个奇怪的现象:在调试状态下,给定时器捕获比较寄存器赋不同值,能产生不同占空比的波形(图1).反映到器件上也有不同的电压显示,但是在设备运行的时候,就不行了(图2). 图1 图 ...

  4. ASP.Net MVC-Web API使用Entity Framework时遇到Loop Reference

    原文地址:http://www.it165.net/pro/html/201210/3932.html 最近开始研究Web API,运气不错第一个测试项目就遇到问题@@-当新增Control时选择[A ...

  5. Rules

    我们之前处理异常的时候用到过Rules,当然还有很多其他规则.Rules允许弹性的添加或者重定义测试方法的行为.测试者可以重复使用或者扩展下面的某一个Rules,也可以写一个属于自己的规则. 这里先展 ...

  6. 九度online judge 1543 二叉树

    题目1543:无限完全二叉树的层次遍历 时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:389 解决:54 题目描述: 有一棵无限完全二叉树,他的根节点是1/1,且任意一个节点p/q的左儿 ...

  7. [转] 使用memc-nginx和srcache-nginx模块构建高效透明的缓存机制

    为了提高性能,几乎所有互联网应用都有缓存机制,其中Memcache是使用非常广泛的一个分布式缓存系统.众所周知,LAMP是非常经典的Web架构方式,但是随着Nginx的 成熟,越来越多的系统开始转型为 ...

  8. Java基础知识强化之集合框架笔记10:Collection集合使用的步骤

    集合使用的步骤: (1)创建集合对象 (2)创建元素对象 (3)把元素添加到集合 (4)遍历集合:       • 通过集合对象获取迭代器对象 • 通过迭代器对象的hasnext()方法判断是否有元素 ...

  9. 自定义控件(视图)2期笔记09:自定义视图之继承自ViewGroup(仿ViewPager效果案例)

    1. 这里我们继承已有ViewGroup实现自定义控件,模拟出来ViewPager的效果,如下: (1)实现的效果图如下: (2)实现步骤: • 自定义view继承viewGroup • 重写onLa ...

  10. codevs1051单词接龙(栈)

    /* 看到n的范围就觉得这个不可能是DP啥的 因为这个接龙的规则十分的简单 只要前缀相同即可 所以先按字典序排一遍 这样保证符合规则的一定挨着 然后弄一个stack 每次拿栈顶元素看看待入栈的元素是否 ...