
背景
在这篇文章中,我会给大家介绍在编写、调试和审查JavaScript代码的时候一些好的实践(至少我是这么认为的)。事实上,我选择了其中7个最常见的场景。
1、使用CDN及其回退地址(fallback)
CDN代表内容传递网络(Content Delivery Network),是一个缓存了JavaScript文件的服务器。使用CDN之后,每当一个新用户发起请求的时候,你的应用程序可以使用CDN缓存,而不用从你的服务器上重新加载库文件。Google、Microsoft和JQuery都提供CDN服务。
鉴于网络并不总是100%可靠,服务器也可能因为一些原因宕机,你必须要确保即使这些事情发生,你的应用程序依然能正常运行。这时候我们就要用到回退地址:当应用程序无法找到缓存库的时候,它就会回退回来,使用服务器文件。
Google CDN 是这样的:
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"> </script>Microsoft CDN是这样的:
<script src="//ajax.aspnetcdn.com/ajax/jquery/jquery-1.9.0.min.js"> </script>需要注意的是,我们没有指定URL协议为http而是使用的//。这是因为CDN服务器支持http和https,如果你的网站拥有SSL认证,你无须修改就可以正常加载文件。
<script>Window.JQuery || document.write(‘<script src=”script/localsourceforjquery”></script>’)当然,你也可以用Require来配置需要的jQuery,不过我觉得就这样也不错。
containerDiv = $("#contentDiv");for(var d =0; d < TotalActions; d++){ containerDiv.append("<div><span class="brilliantRunner">" + d + "</span></div>");}有什么问题呢?咋一看没啥问题。而且我的同事也说这段代码跑得很欢乐呢!我真是哔了狗了!当TotalActions小于50时,察觉不到任何问题;但是其达到25000的时候,速度便降低了很多,原因(我也是google到的)就是DOM交互放到了循环当中。var myContent=[];for(var d = 0; d < TotalActions; d++){ myContent.push("<div><span class="brilliantRunner">" + d + "</span></div>");}containerDiv.html(myContent.join(""));3、缓存var $divId = $("#divId")然后在接下来的代码中,就可以用$divId了。
var thefunction = function(){ $("#mydiv").ToggleClass("zclass"); $("#mydiv").fadeOut(800);}var thefunction2 = function(){ $("#mydiv").addAttr("name"); $("#mydiv").fadeIn(400);}我们可以对它做这样的修改,并且使用链式语法,使其看起来更加漂亮:var mydiv =$("#mydiv");var thefunction = function(){ mydiv.ToggleClass("zclass").fadeOut(800);}var thefunction2 = function(){ mydiv.addAttr("name").fadeIn(400);}但是话又说回来,你也不用每次把所有东西都缓存起来。看下面的例子:$("#link").click(function(){$(this).addClass("gored");}在这里,我既没有用 $(“#link”),或者将其缓存起来,而是使用的$(this)。因为在这个例子中,我操作的对象就是这个链接本身。$("#myimg").attr("src", "thepath").attr("alt", "the alt text");变成下面这样之后,不仅避免了操作DOM元素,而且还不用多次调用相关的设置方法:
$("#myimg").attr({"src": "thepath", "alt": "the alt text"});7、善用CSS类