開始之前先澄清一件事,這里所說的Gadget實(shí)際上是指Google Desktop Gadget,而不是指在iGoogle或者FaceBook上運(yùn)行的Gadget,那個(gè)叫做Universal Gadget。
細(xì)說起來,其實(shí)Gadget和Universal Gadget不僅名稱不同,在實(shí)現(xiàn)上也完全是兩回事。從使用者的角度看,Univeral Gadget就是一個(gè)HTML的頁面,只不過在顯示的時(shí)候是實(shí)時(shí)從iGoogle之類的容器網(wǎng)站上下載過來并展現(xiàn)在一個(gè)iframe里面的。而Desktop Gadget則是一個(gè)不折不扣的桌面應(yīng)用程序(雖然運(yùn)行在Google Desktop這個(gè)容器中)。
從開發(fā)人員的角度看,Universal Gadget是一個(gè)JavaScript文件和XML文件的集合,由容器網(wǎng)站(例如iGoogle,Facebook等等)來渲染成HTML頁面并呈現(xiàn)給最終用戶。在一個(gè)Universal Gadget中使用的技術(shù)都是標(biāo)準(zhǔn)的Web技術(shù),其能量也限制在瀏覽器的框架中。
而在開發(fā)一個(gè)Desktop Gadget時(shí),雖然也使用XML文件來指定程序的UI,使用JavaScript來實(shí)現(xiàn)程序的邏輯,但與Web或者瀏覽器都沒有天然的聯(lián)系,說是完全的另一套程序開發(fā)體系也不為過(使用的XML語法與Universal Gadget不同,能夠使用的JavaScript的對象及功能也不同)。
但另一方面的情況導(dǎo)致兩者時(shí)常被人混為一談,那就是,一個(gè)Universal Gadget是可以被加載到Desktop Gadget的面板中并正常運(yùn)行的(嚴(yán)格的說只有一部分),而一部分Desktop Gadget也可以加載到iGoogle網(wǎng)站中運(yùn)行(因而使它看上去像一個(gè)Universal Gadget,當(dāng)然需要系統(tǒng)已安裝了Google Desktop才可以)。
書歸正傳,下面就來說Gadget到底是什么,以及它的體系結(jié)構(gòu)和背后思想。
(注:以下如果沒有特別指明,提起Gadget全都是指Desktop Gadget,而iGoogle上的Gadget會指明為Universal Gadget)