Heero's Blog

Heero's Blog » 前端开发
Jul 26

前端模板引擎

  • 作者:heero
  • 时间:2010-7-26 19:23

说起模板引擎,很多人会认为这是后台的东西(如PHP的Smarty、Java的Velocity),跟前端没有关系。然而,随着前端的逻辑变得越来越复杂,引入模板技术已经是非常必要了。

模板引擎的主要功能就是把变化的数据融入到不变的模板中,并生成最终结果。目前,前端的主要数据格式无非是XMLJSON

如果选择XML作为数据格式,XSLT就是最佳的模板语言。大三时做的一个社团网站就是采用了这样的模式。XML+XSLT的缺点非常明显:

  • 兼容性问题。XML+XSLT在不同浏览器下的转换方式有所不同。
  • XML、XSLT的语法都是极其冗余的,数据量相对较大。

如果选择JSON作为数据格式,似乎没有原生的模板语言可用,只能生拼

Jun 19

jQuery.animate简单分析

  • 作者:heero
  • 时间:2010-6-19 20:22

很久之前就对jQuery.animate的实现非常感兴趣,不过前段时间很忙,直到前几天端午假期才有时间去研究。

jQuery.animate的每种动画过渡效果都是通过easing函数实现的。jQuery1.4.2中就预置了两个这样的函数:

easing: {
  linear: function( p, n, firstNum, diff ) {
    return firstNum + diff * p;
  },
  swing: function( p, n, firstNum, diff ) {
    return ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum;
  }
}

从参数名隐约可以推测出firstNum是初始值。要是你的数学学得比较好,你可以发现linear函数是直线方程;要是你的物理学得比较好,你可以发现它是匀速运动的位移方程(我数学和物

Jun 12

再论Javascript的类继承

  • 作者:heero
  • 时间:2010-6-12 22:12

说到Javascript的类继承,就必然离不开原型链,但只通过原型链实现的继承有着不少缺陷。

无参数类继承的问题

先看一段示例代码,实现B继承于A:

function A() {
}
A.prototype.a1 = function() {
};

function B() {
}
B.prototype = new A();
B.prototype.b1 = function() {
};

var b = new B();
alert(b.constructor == A); // true
alert(b.constructor == B); // false

这段代码的主要问题是:

  • 需要实例化A作为B的原型,此时就执行了A的构造函数。但按照面向对象的规则,实例化B之前,B及其父类A的构造函数都不应该执行
May 7

Opera下的max-width BUG

  • 作者:heero
  • 时间:2010-5-7 14:16

昨晚着手给个人博客增加网易微博的调用,在Opera下却出现了一个意想不到的问题。内容的展示,一开始是做成横向不间断滚动(现在已经改成纵向定时滚动了)。

不间断滚动的原理这里不详细说了,其中一个必要的条件是,进行滚动的内容容器要设置得很宽,这样才能使内容排在一行。一般情况下,几千像素也够了,但是微博的信息可能很长,况且一读就有好几十条,这宽度非得设成几万像素不可。

虽然数字比较大,但是在Firefox、IE中测试过后也是没问题的,唯独是Opera下出现了悲剧:

Dragonfly

从Opera的开发工具Dragonfly中可以发现,虽然我设置了宽度为80000px,但是计算结果只有32767px。当时我还没发觉32767这个数字的特殊之处

Apr 21

HTML在线编辑器的实现难点

  • 作者:heero
  • 时间:2010-4-21 20:10

到目前为止,我已经开发了两个HTML编辑器了,一个用在公司的CMS项目,另一个用在这个Blog(TidyEditor,暂时没有单独发布)。下面总结一下开发的难点以及应对方法。

HTML在线编辑器实际上是什么

其实有好几种实现方式,目前用得最多、兼容性最好的还是iframe方式。

<iframe src="" frameborder="0"></iframe>

只有这个空iframe是不行的,还要用Javascript把它设成可编辑:

iframe.contentWindow.document.designMode = "on";
iframe.contentWindow.document.contentEditable = true;

换而言之,HTML在线编辑器就是一个可编辑的iframe

加粗、斜体、下划线、加链接等功能如何实现

浏览

Mar 17

IE9预览版简单试用

  • 作者:heero
  • 时间:2010-3-17 10:38

下载安装

今天一早回到公司上网就发现微软在Test Drive网站发布了IE9预览版,地址是 http://ie.microsoft.com/testdrive/ 。虽然我很想尝鲜,但是也担心这个预览版会把系统内的IE8正式版给覆盖了。后来在FAQ里面发现,预览版本不会覆盖其他浏览器,但是会共享IE8的一些设置。要注意的是,IE9预览版只能在Vista SP2以上版本的系统上安装。

安装包共14.2M,安装好以后,桌面上就多了一个“Internet Explorer Platform Preview”的图标。与IE8的图标相比,就是多了右下角的标签和箭头。

IE9预览版图标

双击图标打开IE9后,马上就跳转到Test Drive,此时内存占用为14M-15M。虽然是预览版,但是这个界面也太简洁了,地址栏都没有,要依次按“Page”、“Open”才能输入URL。

  1. 1
  2. 2
  3. 3
  4. 下一页 »