芒果小站

  1. 全球最具业界良心的主机 - DigitalOcean

    毫无疑问,目前做得最好的主机供应商

    猛击这里查看

  2. 芒果小站目前使用的主机 - DigitalOcean

    客服响应快,随时退款,XEN 架构稳定

    猛击这里查看

  3. 最好的日本东京线路主机 - DigitalOcean

    可选弗里蒙特、达拉斯、亚特兰大、纽瓦克、伦敦、东京机房

    猛击这里查看

  • 1
  • 2
  • 3
切换到精简模式
28

9 条 JavaScript 开发最佳实践

作者 芒果/分类 代码/发布于 2010-10-28 23:49

1、使用正确的 <script> 标签

如果你需要在 html 文档中使用一些 JavaScript 代码,你应当通常会使用如下的 <script> 标签:

<script type="text/javascript">
//insert your code here
</script>

但是在源代码中,以下这种标签写法随处可见:

<script type="text/javascript" language="javascript">
//insert your code here
</script>

在 HTML 中,language 属性已经过时,因为具有 type 属性后,language 它是冗余的。不要再这样写了……

事实上,客户端默认为将 JavaScript 代码指定 type=”text/javascript” 属性,除非需要 type=”application/x-javascript” 这样的类型,否则完全没有必要写 type 属性。关于 JavaScript MIME 类型,这里有一篇参考文档:http://krijnhoetmer.nl/stuff/javascript/mime-types/

2、将代码放置于外部文件

使用外部 .js 文档比在 html 文档里直接写 JavaScript 代码要简洁一些,同时也使得 JS 文件可以被缓存,保证网站资源的快速访问。

将你的 JavaScript 代码置于一个 .js 文档中,然后在 html 文档中使用 <script> 标签来引入它:

<script src="http://mangguo.org/myscript.js"></script>

3、避免使用 HTML 注释包裹代码

90 年代一些非常古老的浏览器无法执行 JavaScript 代码。为了防止这些浏览器出现不必要的结果。在 1994 年至 1997 年间,在 HTML 中使用注释包裹 JavaScript 代码是良好的兼容方案,以保证不支持 JavaScript 的浏览器能够忽略它。

这里是一个简单案例:

<script language="JavaScript">
<!--
//insert your code here
//-->
</script>

然而在 2010 年,所有的浏览器(甚至是可爱的 IE 6)都能解释 JavaScript 代码,因此绝对没有使用注释包裹 JS 代码的必要了。更糟的是,如果代码被 HTML 注释包裹,并且使用了 — 符号,浏览器可能会误以为 HTML 文档已经结束。

4、使用框架

除非你的 JavaScript 代码很短或者很简单,你应该通过框架来避免过多代码上的重复劳动。在我看来,jQuery 是最好的,有一个很棒的社区,所以值得尝试。

芒果语:其实 YUI 也很棒,系统、强大、完善、稳妥。更有牛逼叉叉的 Loader 机制,更高效地提高 Web 应用的性能。

5、使用 var 关键字声明变量

你应当使用 var 语句来声明变量,否则变量会存在于全局作用域内,并且使用 var 使得代码可读易懂。

比如下面的案例:

var name = "Jean";
var size = data.length;

之前在 JavaScript 中的对象引用机制 的评论中也有涉及变量作用域的问题。

6、保持代码的分离

几年前,当一个程序员想要为一个 HTML 元素添加事件时(比如说,你想要在用户输入时验证时间信息),他会使用特殊的属性把 JavaScript 代码放置于 html 中,比如 onblur、onchange,onclick 等等。比如:

<input type="text" name="date" onchange="validateDate()" />

虽然照样可行,但却很不简洁。HTML 应当只包含文档的结构层面,就如同使用内联 CSS 是不好的做法一样,内联 JavaScript 同样不可取。

取而代之,下面的代码如何?使用 jQuery 也很简单:

$(document).ready(function(){
	$('input[name=date]').bind('change', validateDate);
});

7、在文档底部包含脚本文件

不久以前,在 <head> 和 </head> 标签之间插入脚本文件一度成为最佳实践。但浏览器是顺序解析文档,并动态加载外部文件的。这就意味着在页面头部插入脚本会在安排在页面内容之前加载。

为了在内容就绪之后再加载脚本,JavaScript 文件应该在文档底部被包含。就像下面这样:

    <script src="myscript.js?"></script>
  </body>
</html>

8、使用 JSLint

JSLint 是一款用于 JavaScript 源代码检查的应用程序。如果它发现 JS 中存在某些问题,就会返回相关的问题描述信息和大概的解决方案。
JSLint 能有效发现代码中的缺陷,或者说代码风格上值得改进之处。这个站点是 JavaScript 开发绝对值得收藏的。

9、不要轻易使用 document.write

陈旧的 document.write 方法已经被不赞成使用了好些年,然而这仍然是一贯使用的方法。

document.write("hello world");

应当使用 DOM 的 innerHTML 属性在页面中插入文本。

document.getElementById('hello').innerHTML = 'hello world';

注:这篇文章是用阿里输入法打的,感觉还不错……

英文原稿:Best practices for modern Javascript development | Cats Who Code
翻译整理:9 条 JavaScript 开发最佳实践 | 芒果

版权所有,转载请注明出处。
转载自 <a href="http://mangguo.org/9-best-practices-for-javascript-development/" title="9 条 JavaScript 开发最佳实践" rel="bookmark">9 条 JavaScript 开发最佳实践 | 芒果小站</a>
如果喜欢这篇文章,欢迎订阅芒果小站以获得最新内容。

已经有 28 条群众意见

  1. 断桥残雪 /2010-10-29 14:24

    第一条:IE6 碰见过一次,不加type 出现过问题,加上 text/javascript 就解决了,建议还是加上保险。 回应

    #1
  2. Firm /2010-10-29 16:12

    IE6 下我已经放弃了。 回应

    #2
  3. IM路人 /2010-10-29 21:13

    这次真的学习了,我这个 js 菜鸟也受益匪浅,顺便问下你的代码框是用了插件吗?什么插件。 回应

    #3
  4. 芒果IM路人/2010-10-29 22:18

    纯粹 CSS 实现。 回应

    #4
  5. ?
    9条JS的最佳实践 - 数据力量 /2010-10-30 01:32

    […] Jung@Cats Who Code – Best practices for modern Javascript development 【翻译】芒果@mangguo – 9 条 JavaScript 开发最佳实践 【整理】horan@数据力量 – 9条JS的最佳实践 […] 回应

    #5
  6. newbird /2010-10-30 21:10

    最后一条:
    document.getElementById(‘hello’).innerHTML(‘hello world’);

    innerHTML 是 DOM 的属性,不是方法,这么做是错误的,

    应该:document.getElementById(‘hello’).innerHTML = ‘hello world’; 回应

    #6
  7. 芒果newbird/2010-10-30 23:14

    嗯没错,已经修正。 回应

    #7
  8. 枯木 /2010-10-31 14:24

    虽然很努力地去看,还是看不懂,菜鸟飘过。 回应

    #8
  9. woiweb /2010-10-31 22:04

    很有用阿,平时都不注意。。。 回应

    #9
  10. 卢松松 /2010-11-01 10:02

    在 HTML 中,language 属性我觉得还没过时呢,至少我博客还在用。 回应

    #10
  11. 德意 /2010-11-01 23:26

    选中的橙色有不习惯。 回应

    #11
  12. wmtimes /2010-11-02 09:31

    总结的很全面。不错。 回应

    #12
  13. 通智广告 /2010-11-02 11:38

    挺好的。我是过来学习的。 回应

    #13
  14. IM路人芒果/2010-11-02 23:03

    哦,了解了,要关闭自动全角半角转换,再套个 CSS 样式。 回应

    #14
  15. 保湿面膜推荐 /2010-11-04 09:46

    好高深啊!看到松松的身影了。 回应

    #15
  16. 小诺 /2010-11-07 22:20

    顶下!坚持最可贵!!! 回应

    #16
  17. 双人小游戏 /2010-11-08 17:31

    好像很基础。。。。 回应

    #17
  18. 优趣 /2010-11-08 22:17

    相当不错啊、每条都很需要啊! 回应

    #18
  19. 梦三秋 /2010-12-06 20:16

    很好很强大~~很有用~~
    有个问题一直困扰着我
    第六条:保持代码的分离
    如果触发函数需要参数怎么办?
    比如说要带上数据的ID,你会怎么办? 回应

    #19
  20. ?
    9 条 JavaScript 开发最佳实践 _ 专注WordPress主题定制设计,WordPress CMS主题设计! /2010-12-30 10:36

    […] practices for modern Javascript development | Cats Who Code 翻译整理:9 条 JavaScript 开发最佳实践 | 芒果 文章来源: […] 回应

    #20
  21. ?
    9 条 JavaScript 开发最佳实践 | zend实验室-java/php学习教程、web前端设计、网站建设、网页设计、网络SEO推广 /2011-07-07 07:32

    […] 转载至:9 条 JavaScript 开发最佳实践 | 芒果小站 分类: html, 其它 标签: 临时 Marquee,用正确的标签做正确的事10 款优秀的国外 Web Design 网站Google Chrome 中文版最小字体限制浏览器简史IE 表单控件的按钮聚焦问题Minify,合并压缩 JavaScript 和 CSS 文件28 款网页设计工具和生成器YUI3:判断表单元素是否为空或选中HTML5 File API,文件拖放上传功能20 款 CSS 资源网站收集推荐 评论 (0) Trackbacks (0) 发表评论 Trackback […] 回应

    #21
  22. 狗狗网 /2011-07-13 16:08

    很好很强大~~很有用~~ 回应

    #22
  23. 狗狗网 /2011-07-13 16:08

    在文档底部包含脚本文件这个最实用了。 回应

    #23
  24. ?
    分离页面配置和代码逻辑 | 千里走单骑 /2011-08-08 14:23

    […] 9 条 JavaScript 开发最佳实践 (23) © 2010 芒果小站 | 固定链接 | 没有评论 | 标签 JavaScript View full post on 芒果小站 […] 回应

    #24
  25. spencer /2011-08-11 16:34

    很基础 回应

    #25
  26. airoschou /2011-10-10 17:21

    蛮容易懂的,初学者值得一看 回应

    #26
  27. CC霜 /2011-10-28 11:39

    除了第八条,其它我都在工作中用到 回应

    #27
  28. NFL橄榄球 /2013-02-05 16:15

    看来是存技术博客啊。没太看懂。 回应

    #28

下面我简单说几句