前端规范(html5,js)

来源:互联网 发布:特效制作软件 编辑:程序博客网 时间:2024/06/07 16:47

参考

http://www.css88.com/archives/5364

http://www.html5cn.org/article-2975-1.html


html5规范

注意点原因不推荐/推荐文档类型 <!DOCTYPE html>规范化的 HTML


不推荐
<title>Test</title>
<article>This is only a test.
推荐
<!DOCTYPE html>
<meta charset="utf-8">
<title>Test</title>
<article>This is only a test.</article>
脚本加载出于性能考虑,脚本异步加载很关键。一段脚本放置在 <head> 内,比如<script src="main.js"></script>,其加载会一直阻塞 DOM 解析,直至它完全地加载和执行完毕。这会造成页面显示的延迟。脚本引用写在 body 结束标签之前,并带上 async 属性。这虽然在老旧浏览器中不会异步加载脚本,但它只阻塞了 body 结束标签之前的 DOM 解析,这就大大降低了其阻塞影响。
而在现代浏览器中,脚本将在 DOM 解析器发现 body 尾部的 script 标签才进行加载,此时加载属于异步加载
例如:

所有浏览器中,推荐


<html>
  <head>
    <link rel="stylesheet" href="main.css">
  </head>
  <body>
    <!-- body goes here -->
 
    <script src="main.js" async></script>
  </body>
</html>

只在现代浏览器中,推荐


<html>
  <head>
    <link rel="stylesheet" href="main.css">
    <script src="main.js" async></script>
  </head>
  <body>
    <!-- body goes here -->
  </body>
</html>媒体对页面上的媒体而言,像图片、视频、canvas 动画等,要确保其有可替代的接入接口。
图片文件我们可采用有意义的备选文本(alt)
视频和音频文件我们可以为其加上说明文字或字幕
不推荐


<img src="luke-skywalker.jpg">
推荐


<img src="luke-skywalker.jpg" alt="Luke skywalker riding an alien horse">

关注点分离

关注点主要指的是:信息(HTML 结构)、外观(CSS)和行为(JavaScript)。为了使它们成为可维护的干净整洁的代码,我们要尽可能的将它们分离开来。

要求:结构、表现、行为三者分离,并尽量使三者之间没有太多的交互和联系

在文档和模板中只包含结构性的 HTML;
而将所有表现代码,移入样式表中;
将所有动作行为,移入脚本之中。

建议:为使得它们之间的联系尽可能的小,在文档和模板中也尽量少地引入样式和脚本文件

清晰的分层意味着:


不使用超过一到两张样式表(i.e. main.css, vendor.css)
不使用超过一到两个脚本(学会用合并脚本)
不使用行内样式(<style>.no-good {}</style>)
不在元素上使用 style 属性(<hr style="border-top: 5px solid black">)
不使用行内脚本(<script>alert('no good')</script>)
不使用表象元素(i.e. <b>, <u>, <center>, <font>, <b>)
不使用表象 class 名(i.e. red, left, center)

不推荐
<!DOCTYPE html>
<html>
<head>
  <link rel="stylesheet" href="base.css">
  <link rel="stylesheet" href="grid.css">
  <link rel="stylesheet" href="type.css">
  <link rel="stylesheet" href="modules/teaser.css">

</head>
<body>
  <h1 style="font-size: 3rem"></h1>
  <b>I'm a subtitle and I'm bold!</b>
  <center>Dare you center me!</center>
  <script>
    alert('Just dont...');
  </script>
  <div class="red">I'm important!</div>
</body>
</html>

推荐

<!DOCTYPE html>
<html>
<head>
  
  <link rel="stylesheet" href="main.css">
</head>
<body>
  
  <h1 class="title"></h1>

  <div class="sub-title">I'm a subtitle and I'm bold!</div>
  
  <span class="comment">Dare you center me!</span>

  <div class="important">I'm important!</div>
 

  <script async src="main.js"></script>
</body>
</html>

Type 属性

省略样式表与脚本上的 type 属性。鉴于 HTML5 中以上两者默认的 type 值就是 text/css 和 text/javascript,所以 type 属性一般是可以忽略掉的。甚至在老旧版本的浏览器中这么做也是安全可靠的。不推荐


<link rel="stylesheet" href="main.css" type="text/css">
<script src="main.js" type="text/javascript"></script>
推荐


<link rel="stylesheet" href="main.css">
<script src="main.js"></script>

ID 和锚点

通常一个比较好的做法是将页面内所有的头部标题元素都加上 ID.
 这样做,页面 URL 的 hash 中带上对应的 ID 名称,即形成描点,方便跳转至对应元素所处位置。
打个比方,当你在浏览器中输入 URL http://your-site.com/about#best-practices,浏览器将定位至以下 H3 上。


<h3 id="best-practices">Best practices</h3>

HTML 引号

使用双引号(“”) 而不是单引号(”) 不推荐


<div class='news-article'></div>
推荐


<div class="news-article"></div>协议头建议在指向图片或其他媒体文件、样式表和脚本的URL地址中省略http:https:协议部分,除非已知相应文件不能同时兼容2个协议。 大小写所有的代码都应是小写的                                     

js 规范

参考:
http://www.css88.com/archives/5366

注意点原因不推荐/推荐=== 三元条件判断 不推荐


if(x === 10) {
  return 'valid';
} else {
  return 'invalid';
}
推荐


return x === 10 ? 'valid' : 'invalid';字符串统一使用单引号(‘),不使用双引号(“)。
这在创建 HTML 字符串非常有好处
var msg = 'This is some HTML <div class="makes-sense"></div>';

不要使用 switch

switch 在所有的编程语言中都是个非常错误的难以控制的语句,建议用 if else 来替换它 

数组和对象字面量

 不推荐


// Length is 3.
var a1 = new Array(x1, x2, x3);
 
// Length is 2.
var a2 = new Array(x1, x2);

推荐


var a = [x1, x2, x3];
var a2 = [x1, x2];
或者:
var arryAll = [];  
arryAll.push(1);  
arryAll.push(2);  



对象:

不推荐


var o = new Object();
 
var o2 = new Object();
o2.a = 0;
o2.b = 1;
o2.c = 2;
o2['strange key'] = 3;




推荐


var o = {};
 
var o2 = {
  a: 0,
  b: 1,
  c: 2,
  'strange key': 3
};迭代数组使用 Array.forEach 或者如果你要在特殊场合下中断迭代,那就用 Array.everyFirefox 和Chrome 的Array 类型都有forEach的函数(IE无)
var arryAll = [];  
arryAll.push(1);  
arryAll.push(2);  
arryAll.push(3);  
arryAll.push(4);  
  
arryAll.forEach(function(e){  
    alert(e);  
})  


every:检查数组里的所有元素是否都满足every函数的为真
function isBigEnough(element, index, array) {
 return (element >= 10);
}
 
var passed = [12, 5, 8, 130, 44].every(isBigEnough);
document.write("First Test Value : " + passed ); //false 

或者:

var xx = [1, 2, 5, 8];
function pp(x){
     return x % 2 == 0;
}
var r = xx.every(pp);
console.log("r = " + r);//false

语句块内的函数声明

 不推荐


if (x) {
  function foo() {}
}
推荐


if (x) {
  var foo = function() {};
}分号与函数分号需要用在表达式的结尾,而并非函数声明的结尾var foo = function() {
  return true;
};  // semicolon here.

 
function foo() {
  return true;
}  // no semicolon here.

变量赋值时的逻辑操作

 不推荐


if(!x) {
  if(!y) {
    x = 1;
  } else {
    x = y;
  }
}
推荐


x = x || y || 1;使用 === 精确的比较操作符避免在判断的过程中,由 JavaScript 的强制类型转换所造成的困扰

如果你使用 === 操作符,那比较的双方必须是同一类型为前提的条件下才会有效。log('0' == 0); // true
  log('' == false); // true
  log('1' == true); // true
  log(null == undefined); // true赋值尽量写在变量申明中 多个变量声明一个var:
不推荐
var a = 10;
  var b = 10;

推荐

var a = 10,
      b = 10;

不推荐


var a,
    b,
    c;
 
a = 10;
b = 10;
c = 100;


推荐


var a = 10,
    b = 10,
    c = 100;                                    
0 0
原创粉丝点击