Javascript微模板引擎

1 comment , Tagged : , ,

Javascript微模板引擎,好吧,叫得这么好听其实就一简陋的前端模板。

后端模板大家应该听得比较多吧(Smarty,Velocity等),而前端我们通常是直接在JS里拼接我们需要的html,这种混合写在一起的方式,导致html结构稍微复杂点就很难看清楚,对维护造成一定的不便。所以人们就“发明”了模板这东西,使用一些特殊标记来代表数据循环、值替换等功能,使内容格式尽可能清晰。

模板的核心就是模板解析,下面要展示的引擎也仅有这个功能,没有其它扩展,要求不高的可以拿去试试!!下面我们来看一下该引擎的程序:

HTML5入门-离线存储初探

2 comments , Tagged : , ,

这已不是什么新东西了,也没什么技术含量,只适合新手当作入门,如果您已了解过就没必要往下看了,哈哈!!

两周多前了解了一下并试作了一个DEMO,一直人懒没有把文章整理出来。昨天给自己的要求是今天一定要整理出来,接下来的两周好好看下书,为之后的路作准备。虽然还没确定下来,但还是得先作下准备,多积累点东西。

“离线存储”顾名思义,使得你的web应用可以在用户离线的状况下进行访问。这个技术至少有3个好处:

  • 最重要的一个好处当然是用户可以离线访问你的web应用;
  • 文件已被缓存在本地,使得web页面加载速度有显著提升;
  • 离线应用只加载被修改过的已缓存资源与不缓存的文件,因此也降低了服务器的负载压力

CSS的解析规则

1 comment , Tagged :

对CSS有一定了解的人,应该都知道CSS是从右往左解析的。最近在网上看到一张关于CSS解析规则的图片,挺有趣的,也挺直观的,废话不多说,直接上图。

Duff’s Device优化循环性能

no comments , Tagged : ,

“Duff’s Device”是一个循环体展开技术,它使得一次迭代中实际执行了多次迭代的操作。它最早是在1983年C上由Tom Duff实现,然后2001年Jeff Greenberg移植到JavaScript上。

我们先来一个典型的实现方式:

//credit: Jeff Greenberg
var iterations = Math.floor(items.length / 8),
     startAt = Items.length % 8,
     i = 0;
do{
  switch(startAt){
    case 0: process(items[i++]);
    case 7: process(items[i++]);
    case 6: process(items[i++]);
    case 5: process(items[i++]);
    case 4: process(items[i++]);
    case 3: process(items[i++]);
    case 2: process(items[i++]);
    case 1: process(items[i++]);
  }
}while(--iterations);

Image.onload在IE下无法获取宽高的问题

no comments , Tagged : ,

今天在IE下想在onload事件获取img的宽高,但一直取不到值,就在网上搜索了一下,原来又是和顺序有关,XXX。我们先来看下面这个例子:

var img = new Image();
img.src = "test.gif";
img.onload = function(){
  alert ( img.width );
};

单纯这样看,并没不会觉得有什么问题。但在IE中存在BUG,第一次打开页面时还正常,之后就没反应了,怎么刷新也无效,这是因为图片已经被缓存在本地了。

var img = new Image();
img.onload = function(){
  alert ( img.width );
};
img.src = "test.gif";

我们现在改成上面这样,问题就解决了。我们还可以通过img.complete先来判断是否已缓存在本地,如果是那就不用用onload去获取了

要注意的是在IE6下,GIF含有多帧的图片会多次加载,所以在onload事件里,记得要把img.onload设置为null