1. 程式人生 > >script.aculo.us概述

script.aculo.us概述

prototype只有底層沒有UI,不像dojo、ExtJs一樣自身就以建立UI為目標,再加上prototype對Element的加強還沒有到至善至美的地步,所以呢,用prototype建立widgets有時還是會有一些麻煩,例如我上次從ExtJs去請了個alignTo,那個getScroll這麼重要,但是在prototype就是沒有。說這麼多廢話就是要表明:

UI很重要,但是prototype本身沒有這方面的做多大努力。

MIT的大俠為此寫了script.aculo.us,裡面其他東西我不大看重,唯讀對Effects這個部分很有興趣,但是,還是感嘆它體積大了一點。不過,基於prototype的特效庫估計也就只有它了,Effects中封裝了所有的特效,像什麼組合動畫、非同步動畫,我當初在學asp.net ajax時還在感嘆微軟真是厲害,事實上,我敢保證,絕對是從script.aculo.us中學過去的。

script.aculo.us的程式碼也才1123行,在看慣了幾千行的js程式碼後,這點量我也不大在乎了。要好好研究一下,主要是有鑑於平常用到的特效事實上並不多,我想像Fly.Window一樣,把一些平常最常用的特效抽出來。最好整個幾K的小擴充套件那是最好的了。

在網上找了一下關於script.aculo.us的資料,發現,中文的太少了,反反覆覆就是某人的幾篇文章在那裡轉,多是講的一些簡單用法,但是,對於原始碼、裡面的原理都沒有涉及,感嘆:真正的大俠都鼓足了勁掙錢去了,不肯寫這種吃力不討好的教程啊。

有人問,通篇講這些沒用的事,不講點怎麼用script.aculo.us的東西,用script.aculo.us,兩個字,簡單,有兩種用法,一般人只曉得一種,我提一下:

就好比這個HighLight這個特效,它的作用是讓目標元素的顏色由一個顏色漸變到另一顏色,如果沒有在options中定義restoreColor的話,那麼,它在漸變到目標顏色後又會漸變化原來的顏色,你瞧這話說得,通俗講就是:高亮顯示或高亮一下又變回來。這個非要用或看程式碼才清楚。程式碼如下:

var h1=new Effect.HighLight('div1');

var h2=$('div1').highlight();

一般人只曉得第一種用法吧,網上的資料也大多講第一種,連官方網站好像也只提第一種,事實上,第二種用法才是更讓人舒坦的用法。這個我也是從原始碼中看出來的,所以啊,不看程式碼,高深的東西就不會出來。更多其它用法,官方網站多的是,哪用我囉嗦啊。

下一篇中正式來分析一下它的原始碼、基本原理。