你需要知道的10个最佳javascript开发实践小结


Posted in Javascript onApril 15, 2012

尽管很多的开发人员都乐于颂扬javascript,但是仍旧有人看到它的阴暗面。

使用很多javascript代码的web页面会加载很慢,过多的使用javascript使得网页丑陋和拖沓。很快如何有效地使用javascript成为一个非常火热的话题。

这里让我们列出10个最佳javascript实践,帮助你有效地使用javascript。

1. 尽可能的保持代码简洁
可能大家都听到过了N遍这个代码简洁问题了。作为一个开发人员你可能在你的代码开发过程中使用了很多次,但千万不要在js开发中忘记这点。

尽量在开发模式中添加注释和空格,这样保持代码的可读性
在发布到产品环境前请将空格和注释都删除,并且尽量缩写变量和方法名
使用第三方工具帮助你实现压缩javascript。
2. 思考后再修改prototypes
添加新的属性到对象prototype中是导致脚本出错的常见原因。

yourObject.prototype.anotherFunction = ‘Hello'; 
yourObject.prototype.anotherMethod = function () { … };

在上面代码中,所有的变量都会被影响,因为他们都继承于"yourObject"。这样的使用会导致意想不到的行为。所以建议在使用完后删除类似的修改。
yourObject.prototype.anotherFunction = ‘Hello'; 
yourObject.prototype.anotherMethod = function () { … }; 
test.anotherMethod(); 
delete yourObject.prototype.anotherFunction = ‘Hello'; 
delete yourObject.prototype.anotherMethod = function () { … };

3. Debug Javascript代码
即使最好的开发人员都会犯错。为了最大化的减少类似错误,请在你的debugger中运行你的代码,确认你没有遇到任何细微的错误

4. 避免Eval
你的JS在没有"eval"方法的时候也可以很好的工作。“eval”允许访问javascript编译器。如果一个字符串作为参数传递到"eval",那么它的结果可以被执行。

这会很大的降低代码的性能。尽量避免在产品环境中使用"eval"。

5. 最小化DOM访问
DOM是最复杂的API,会使得代码执行过程变慢。有时候web页面可能没有加载或者加载不完整。最好避免DOM。

6. 在使用javascript类库之前先学习javascript
互联网充斥着很多的javascript类库,很多程序员都往往使用js类库而不理解负面影响。强烈建议你在使用第三方类库之前学习基本的JS代码,否则,你就准备着倒霉吧。

7. 不要用"SetTimeOut"和"Setinterval"方法来作为"Eval"的备选
setTimeOut( "document.getID('value')", 3000);
在以上代码中 document.getID('value') 在"setTimeOut"方法中被作为字符串来处理。这类似于'eval'方法,在每个代码执行中来执行一个字符串,因此会降低性能,因此,建议在这些方法中传递一个方法。

setTimeOut(yourFunction, 3000);
8. []比"new Array();"更好
一个常犯的错误在于使用当需要数组的时候使用一个对象或者该使用对象的时候使用一个数组。但是使用原则很简单:

“当属性名称是小的连续整数,你应该使用数组。否则,使用一个对象” - Douglas Crockford, JavaScript: Good Parts的作者.

建议:
var a = ['1A','2B'];
避免:

var a = new Array();
a[0] = "1A";
a[1] = "2B";
9. 尽量不要多次使用var
在初始每一个变量的时候,程序员都习惯使用"var"关键字。相反,建议你使用逗号来避免多余的关键字,并且减少代码体积。 如下:

var variableOne = ‘string 1',
variableTwo = ‘string 2',
variableThree = ‘string 3';
10. 不要忽略分号 ";"
这往往是大家花费数个小时进行debug的原因之一。

我很确信你肯定也在其它的文章中阅读过以上相关的内容,但是大家可能往往都忽略了很多基本的规则。你是不是也曾经忽略过分号。是不是也遇到过eval关键字问题导致性能问题?希望大家能够喜欢,谢谢!

Javascript 相关文章推荐
JavaScript网页制作特殊效果用随机数
May 22 Javascript
分享XmlHttpRequest调用Webservice的一点心得
Jul 20 Javascript
JavaScript将页面表格导出为Excel的具体实现
Dec 27 Javascript
node.js中的fs.truncate方法使用说明
Dec 15 Javascript
javascript中checkbox使用方法简单实例演示
Nov 17 Javascript
全面解析Bootstrap中tab(选项卡)的使用方法
Jun 06 Javascript
Javascript 动态改变imput type属性
Nov 01 Javascript
jQuery ajax实现省市县三级联动
Mar 07 Javascript
Javascript实现一个简单的输入关键字添加标签效果实例
Jun 01 Javascript
Angular2 组件间通过@Input @Output通讯示例
Aug 24 Javascript
Angular实现的table表格排序功能完整示例
Dec 22 Javascript
webpack的tree shaking的实现方法
Sep 18 Javascript
javascript针对DOM的应用分析(四)
Apr 15 #Javascript
javascript针对DOM的应用分析(三)
Apr 15 #Javascript
javascript针对DOM的应用分析(二)
Apr 15 #Javascript
javascript针对DOM的应用实例(一)
Apr 15 #Javascript
JavaScript中的null和undefined解析
Apr 14 #Javascript
dtree 网页树状菜单及传递对象集合到js内,动态生成节点
Apr 14 #Javascript
jquerymobile checkbox及时刷新才能获取其准确值
Apr 14 #Javascript
You might like
ThinkPHP CURD方法之page方法详解
2014/06/18 PHP
浅谈PHP的反射API
2017/02/26 PHP
php打开本地exe程序,js打开本地exe应用程序,并传递相关参数方法
2018/02/06 PHP
jQuery中(function(){})()执行顺序的理解
2013/03/05 Javascript
js循环改变div颜色具体方法
2013/06/25 Javascript
JS页面延迟执行一些方法(整理)
2013/11/11 Javascript
javascript实现的一个带下拉框功能的文本框
2014/05/08 Javascript
jquery中EasyUI实现异步树
2015/03/01 Javascript
通过实例理解javascript中没有函数重载的概念
2015/06/03 Javascript
MVVM模式中ViewModel和View、Model有什么区别?
2015/06/19 Javascript
Bootstrap每天必学之折叠
2016/04/12 Javascript
BootStrap glyphicon图标无法显示的解决方法
2016/09/06 Javascript
Node Puppeteer图像识别实现百度指数爬虫的示例
2018/02/22 Javascript
vue-cli项目中使用公用的提示弹层tips或加载loading组件实例详解
2018/05/28 Javascript
jQuery md5加密插件jQuery.md5.js用法示例
2018/08/24 jQuery
Vue filter格式化时间戳时间成标准日期格式的方法
2018/09/16 Javascript
Webpack中loader打包各种文件的方法实例
2019/09/03 Javascript
js实现列表向上无限滚动
2020/01/13 Javascript
JS面试题中深拷贝的实现讲解
2020/05/07 Javascript
如何基于viewport vm适配移动端页面
2020/11/13 Javascript
[50:58]2018DOTA2亚洲邀请赛3月29日 小组赛A组OpTic VS Newbee
2018/03/30 DOTA
python中pip的使用和修改下载源的方法
2019/07/08 Python
Python IDE Pycharm中的快捷键列表用法
2019/08/08 Python
python图片二值化提高识别率代码实例
2019/08/24 Python
python 利用jinja2模板生成html代码实例
2019/10/10 Python
使用pyhon绘图比较两个手机屏幕大小(实例代码)
2020/01/03 Python
python应用Axes3D绘图(批量梯度下降算法)
2020/03/25 Python
Python 实现PS滤镜中的径向模糊特效
2020/12/03 Python
【魔兽争霸3重制版】原版画面与淬火MOD画面对比
2021/03/26 魔兽争霸
大学生职业生涯规划书范文
2014/01/04 职场文书
代领报检证委托书范本
2014/10/11 职场文书
2015年大学社团工作总结
2015/04/09 职场文书
2015年党务公开工作总结
2015/05/19 职场文书
沂蒙六姐妹观后感
2015/06/08 职场文书
golang DNS服务器的简单实现操作
2021/04/30 Golang
python非标准时间的转换
2021/07/25 Python