有個成語叫做“才華洋溢”,是用來描述聰明的人的。我不是聰明的人,想了很久也沒有想到一個成語來描述自己。在Tim Horton‘s里面坐了一下午,又在辦公室坐到現(xiàn)在。人是好好坐著,但是心卻像窗外的雪花一樣,滿天飛舞。最后,終于按耐不住要寫下幾個臭字,以泄我書寫之欲。
一切都要從AJAX說起。這東西最近挺火的,很多搞網(wǎng)站的都在研究這個東西。我對搞網(wǎng)站的從來都很鄙夷,不過AJAX讓我鄙夷了自己一把。從90年代中期一直到前些日子,我們的互聯(lián)網(wǎng)被每時每刻地豐富著各種各樣的功能,從最早的CGI,一直到紅了好幾年的ASP,PHP。其實這些技術,都是基于無態(tài)HTTP的。盡管它們提供了相當大的互交性,但還是建立在HTTP的POST/GET模型之上。當然,我們也有Java和Flash,但是這兩個只能算是嵌入在頁面的外部應用程序,是和瀏覽器無關的。無態(tài)HTTP,一個很大的缺點,就是每次交替信息的時候需要傳輸大量的冗余內(nèi)容,比如一個頁頭、頁尾,甚至任何不用變化的內(nèi)容——如果假設緩存機制處于最差情況(Worst Case)——都要至少重新傳輸一次,從而造成一定的時間拖延。我們之所以沒有怨言,是因為我們已經(jīng)習慣了。就好像當世界還沒有互聯(lián)網(wǎng)的時候,今天的網(wǎng)蟲們當年不還是樂此不疲地生活么?
AJAX,改變了這個狀況。根據(jù)Wikipedia上面的定義,AJAX包括:
* 基于web標準(standards-based presentation)XHTML+CSS的表示;
* 使用 DOM(Document Object Model)進行動態(tài)顯示及交互;
* 使用 XML 和 XSLT 進行數(shù)據(jù)交換及相關操作;
* 使用 XMLHttpRequest 進行異步數(shù)據(jù)查詢、檢索;
* 使用 JavaScript 將所有的東西綁定在一起。
通過上面這些技術AJAX能讓無態(tài)的HTTP對話成為好像桌面程序那樣的有態(tài)對話。我比較笨,不是很喜歡術語太多的定義,所以一般都是靠例子來理解新生事物的。這個例子很著名,應該很多人都接觸過,就是Google Map。每一次進入Google Map,我們可以注意到在移動地圖的時候,整個頁面是沒有重新刷新的。通過內(nèi)部的JavaScript,圖像數(shù)據(jù)可以迅速并完整地傳輸。假如用老的辦法來實現(xiàn)這樣的地圖的話,頁面上至少需要幾個方向按鈕和放大縮小按鈕;而每次移動或者變換地圖的時候,重新刷新頁面的時間就相對來說很長。具體如何實現(xiàn)的,其實看一個實際簡單的代碼教程會很有幫助。除了傳統(tǒng)的基于XMLHttpRequest
的AJAX之外,還有一種不用 XMLHttpRequest
的AJAX方法可以參考一下。
Google確實是個很善于給人驚喜的公司,除了它的地圖查詢,在其它服務,比如Gmail、Google Suggest、Google Reader當中,都廣泛應用了AJAX技術。看起來好像很深奧,其實根據(jù)王建碩的話來講,只不過是“老酒有了新瓶子”。確實是這樣,絕大多數(shù)網(wǎng)站都可以在不用添加任何軟件的前提下享受到AJAX帶來的快感,包括His Story。在His Story主頁面的右側(cè)欄里找到Shoutbox,隨便打個“你好,王小虎”之類的話,就可以看到效果了。是不是非常網(wǎng)絡小資?
可惜的是,目前祖國大地上的這樣的網(wǎng)絡小資、大資數(shù)量還是很少的。很多大牌的門戶站點,都還沒有認識到集成AJAX到自己的頁面里去其實是一件非常容易的事情。哪怕只有那么一丁點AJAX的影子,估計都能吸引眾多眼球。其實中國業(yè)內(nèi)的人士可以說是已經(jīng)迫在眉睫了,除了上面綜述過Google的那些基于AJAX的產(chǎn)品,微軟馬上也要推出它的Live系列服務,其中包含了大部分以前的桌面應用,只不過是擺在了瀏覽器里面。還有Yahoo!旗下的新秀Flickr,都是非常有競爭力的服務。
有這些巨人站在路中間,我們還可以做什么?這個問題很幼稚。MSN China做的再好,看新聞也是去大大小小的本地新聞站點;Google論壇做的再全,灌水發(fā)帖還是去星星點點的雷傲、動網(wǎng)論壇。他們插足中國市場至少也有段時日了,除了Google的那個搜索主頁面和MSN那個Space,絕大部分服務頁面且不說大多數(shù)老百姓,至少我周圍的朋友和親人都是沒用過,甚至沒聽說過的。只要一說聯(lián)眾、QQ、網(wǎng)易、新浪這些名字,我保證我的父親母親至少一天內(nèi)訪問過其中一個站點多次。這樣的巨人,在中國,可以說是失敗的。他們聰明地看到了中國的市場,卻沒有看到中國的門路,直接把西方站點的CSS拷貝一通,然后收買幾個本地小網(wǎng)站,漢化一下主頁面……是統(tǒng)統(tǒng)不能給滿分的。
那么我們可以用AJAX來做些什么呢?提示在上面,答案在下面:
博客
登陸頁面:實時更新最新的博客文章和評論、實時按秒計算的排行榜、動態(tài)博客地圖、不用切換頁面的登陸途徑……
書寫頁面:豐富文本模式的所見即所得、HTML模式的實時預覽、實時顯示剛剛發(fā)布的同類別文章的列表、地理位置附近有誰正在書寫……
管理頁面:不用刷新頁面的刪除和修改、實時顯示按秒計算的點擊率和引用站點、動態(tài)顯示留言……
論壇
主壇版面:動態(tài)更新帖子標題、實時財產(chǎn)排行榜、實時公告、站內(nèi)好友間即時通信……
子壇版面:動態(tài)更新每個帖子的點擊率、實時顯示正在訪問當前版面的用戶(“某人來此地不屑一顧地瞄了一眼,隨即飄然而去”、“某人駐足此地已有時日,丫到底在想啥?”)
發(fā)帖頁面:(同博客中的書寫頁面)
這些都是腦子里能立刻想到的,當然不是全部的。其他還可以擴展的服務,比如相冊、拍賣,甚至網(wǎng)上做各種應用,包括可以直接在博客或者論壇發(fā)文章的獨立豐富文本書寫器……太多太多了。其實這些想法之前也可以做,只不過反復的刷新頁面和冗長的延遲讓這些想法變得不切實際。大膽地想象這一切有中國特色的構思吧,那樣的一個Web 2.0時代將會給人們帶來多少驚奇?終于想到用什么成語來描述自己了,那就是“欲火焚身”。年青人,總有頂著個硬邦邦的腦袋瓜子去闖事業(yè)的欲望——AJAX讓我的這種欲望上升到了一個新的高度。
如果有人說我應該去演《大腕》里面的某個樓長,我會很開心的:說明一切還不算太晚。