論壇文章
不是拼錯字的創意混搭─Fjax

 Fjax?是的,看起來的確有點像是Ajax的拼錯字。這可不是筆者開玩笑的傑作,而是另一個Ajax-like的Rich Internet Application(RIA)解決方案!然而把A換成了F以後,除了字面上的改變,整個架構上是否有何差異?其特色又是如何?本文就為各位讀者做一個概略的介紹。

好吧!那什麼是Fjax?

Ajax與Web 2.0幾乎已經成為了共生詞,相信各位對Ajax的基本概念甚至底層架構都已相當熟悉,本文就不再贅述!
      ● Fjax=Flash+JavaScript+XML
您也許知道Flash是一種應用在多媒體設計的技術之一,許多程式設計人員一瞥見Flash這五個大字立刻迅速退避三舍,但是這邊要先強調的是:Flash技術的參與並不代表使用Fjax的開發者需要了解Flash,Fjax只是利用Flash的一些特性來達成Ajax的更新不換頁(refresh without full page reload)。不管是剛開始接觸使用Ajax的新手或是已經利用Ajax開發一段時日的熟手,都會認為Ajax頗為複雜;然而造成Ajax複雜的原因泰半來自於Ajax的核心XMLHttpRequest在各瀏覽器之間沒有相容共通的標準,在現實的環境為了讓使用者經驗(User experience)煥然一新,只好硬著頭皮寫一大堆瀏覽器的相容語法徒增複雜!根據Macromedia自己發布的統計數字顯示,Flash player的普及率已經超過90%,幾乎可以推論大多數在網路上活動的使用者,他們的瀏覽器都能夠順利的支援並使用Flash技術;而Fjax的出現則是藉由目前高普及率的Flash技術,「間接的」減少了不同廠牌瀏覽器相容的複雜問題。

How it works?

您一定也好奇Fjax是怎麼完成這樣的目標呢?其實Fjax是利用一個隱藏的4K大小的swf檔案(註1)替代XMLHttpRequest的位置,向Server Side溝通取得並解析(Parse)XML,減化了一般Ajax在這一部份的繁瑣工作,並且加速(註2)解析XML的速度,原創作者強調,使用者是看不到這swf檔案,開發者也僅需透過Javascript API來操作被封裝的Flash即可開發Ajax-like的網頁應用程式。您瞧,這種做法是不是相當有「創意」呢!

結語

Web 2.0的時代最重要的精神之一就是Mashup,Fjax的「創意混搭」的確引起不同關注,當然每種技術都會有正反兩面的支持者,有人認為這種做法的好處實在不多,就實際面而言,原作者雖然宣稱了Fjax處理XML的速度優於利用Javascript+XMLHttpRequest,但也沒有精確的統計數字,此外,Fjax官方網站所提的應用範例(註3)也不夠突顯Fjax所帶來的優勢,的確有點可惜!宣教式的介紹畢竟還是好處面居多,需要更多資訊作為客觀判斷時,這邊也有兩篇部落格文章(註4)提供給讀者您採用。當然親自下載Fjax所提供的SDK體驗一下或許感受會更深!

註解:
1. swf是Macromedia所提出的一種格式,使用Flash所製作出來的movie就是這種格式。
2. 所謂的加速只是Fjax原作者宣稱,並未提供任何精確數據。
3. 這個範例只是利用Fjax載入靜態的資訊內容並顯示在網頁上,並未充分發揮Fjax的特性與Ajax-like的必須性。
4. 這兩篇文章主要是站在批判與反對立場,比起一般的口水戰,這兩篇內容剖析的比較完整且客觀,值得一讀,連結列在參考資料中。

參考資料:
 Fjax Implementation Guide at Fjax official website
    http://www.fjax.net/
 Fjax: Just say no
  http://simon.incutio.com/archive/2006/06/25/fjax
 FJAX vs AJAX vs plain page
  http://ruturajv.wordpress.com/2006/06/27/fjax-ajax-plain-http/