七月, 2009的档案

高性能网站:减少HTTP请求数量

有统计显示,网站用户只花费10%-20%的时间用于下载HTML文件,剩下80%-90%的时间用于下载HTML文件中包含的相关组件(如图片、javascript脚本、css、Flash等),因此,提高网站响应速度最简单的方法就是减少页面中包含的组件,从而减少HTTP请求数量。

从页面中删除组件的建议会导致性能和产品设计之间的矛盾。在本章节中将要所介绍的技术只是用来减少HTTP请求数量,并非将网页的相关组件删除,以此来权衡性能和产品设计之间的关系。这些技术包括:使用图片地图,CSS精灵图片,行内图片,合并js核css文件。使用这些技术后,网页的HTTP请求数将大幅度减少。

详情 »

理解jQuery.extend和jQuery.fn.extent的区别

看完jQuery中文手册和jQuery官方网站后,我觉得里面的jQuery.extend和jQuery.fn.extend的区别有点难,从Google中找了一些资料,加上自己的理解,做以下心得笔记:

jQuery.extend
对jQuery对象的扩展,可以理解为静态方法,是全局的,不需要实例jQuery就可以使用。

JAVASCRIPT:
  1. <!--
  2.         jQuery.extend({
  3.             add: function(a, b) {
  4.                 return a + b;
  5.             }
  6.         });
  7.  
  8.         alert($.add(3, 4)); //7
  9.     //-->

jQuery.fn.extend
对jQuery元素的扩展,只能用在jQuery元素上,可以理解为普通方法。定义插件时需要返回this,以支持jQuery的链式操作。

JAVASCRIPT:
  1. <!--
  2.         jQuery.fn.extend({
  3.             red: function() {
  4.                 return $(this).css('color', '#ff0000');
  5.             }
  6.         });
  7.  
  8.         $('#test').red();
  9.     //-->

jQuery用对象方法做事件绑定

jQuery的事件绑定遇到OOP时,就有不太好用,如果你想绑定一个对象的方法到一个事件上,遇到最大的问题就是:jQuery对象自己封装了bind,传递参数时,this被用来指向了触发事件的元素,这就导致了在方法中使用this指向对象本身都会出现“未定义”的错误。下面对jQuery做了扩展,添加了hitch函数,用来传递this对象,如果第三个参数未提供,hitch和bind函数是一样的。如果需要获取到事件触发的元素,就使用原生的e.target。 详情 »