隨著Ajax盛行,許多網站紛紛採用這項技術,而這股時代趨力的背後,各式各樣的Ajax開發架構可說是最大的功臣,讓開發人員不用重造輪子,省去從JavaScript底層重新開始構造程式的工作。
簡化JavaScript的使用難度
許多開發人員低估JavaScript的難度。過去JavaScript往往被當作是擾人的小玩意,不是彈跳出視窗,就是跑馬燈、動態文字等花俏的應用。 然而JavaScript獨特的物件觀念與靈活的文法,賦予它深入操作檔案物件模型DOM)與操控CSS的強大能力,而能夠充分應用瀏覽器 XMLHttpRequest物件,更打下今日Ajax大片江山。
要全盤掌握這些應用,並沒有想像中容易,由於實作的方式充滿彈性,只要檢視各個架構文法,就可發現它們之間的差異性之大。但現存的各種架構致力於簡 化JavaScript的應用難度,因此使用Ajax架構,能讓開發人員更快專註在開發工作上。
解決煩人的瀏覽器相容性問題
即使開發人員功力深厚,可以輕鬆駕馭JavaScript文法,然而一旦遇到琳琅滿目的各式瀏覽器,通常也得敗下陣來。不同瀏覽器對檔案的解析與文法的支援並不一致,在各種作業系統或版本上有時也會表現出不同的行為例如IE6與IE7的差異),讓許多JavaScript應用程式的瓶頸,都發生在相容性上。使用Ajax架構的好處之一,便是它已經預先為開發人員解決瀏覽器相容性問題。
開發流程變得更單純
開發過非同步傳輸程式經驗的人,就一定能體會撰寫過程相當煩瑣,必須檢查回傳狀態、指定後端應用程式和回呼程式等細節,而這些流程,Ajax架構通常會予 以簡化,減少開發人員與細節奮鬥的時間。另外,許多Ajax架構都提供了拖曳元件、動畫效果、動態選單等,只需指定方法就能使用,節省不少開發力氣。
不過Ajax架構實作的方式各不相同,有些JavaScript文法開發,也有的用.NET或Java實作;除了在使用者端執行,也有利用伺服器端來實現的方式。我們特別選出十種Ajax架構,讓開發人員瞭解各項Ajax架構的適用性。
1. APS.NET的官方解決方案
ASP.NET AJAX是微軟.NET平台上的解決方案,提供涵蓋伺服器端與使用者端所需的AJAX技術與JavaScript整合機制。透過與下載與安裝ASP.NET AJAX到Visual Studio 2005當中,即可利用預設的控制項,開發出一些視覺特效與非同步傳輸的應用。
另外,ASP.NET AJAX也提供控制項的Toolkit,包含開發人員想自行開發AJAX應用時所需的基底類別與專案範本。ASP.NET AJAX除了處理瀏覽器的相容性問題,也讓使用者端的JavaScript在開發時加入物件導向特性,例如型別系統、資料型別、命名空間、事件等,使得程式 碼更容易除錯、維護與重複使用。
雖然ASP.NET AJAX提供伺服器與使用者端的解決方案,透過Visual Studio2005加持,也讓開發、除錯的難度降低,不過和其他AJAX架構相比,許多AJAX效果和功能都還在測試階段在CTP版本中供使用者測 試),可以應用的功能有限。
2.支援功能
一些輕巧的Ajax架構,用意在解決JavaScript遇到的易用性或特效問題,相較之下,Dojo更像是個面面俱到的JavaScript工具套餐,號稱可以降低網頁或網頁應用程式前端開發速度。
Dojo支援拖拉、淡出、淡入、移動、透明、操作SVG圖檔等動態效果,它的Widget也讓使用者可以輕易使用選單,分頁標籤tab)、樹狀結 構、日曆、文字編輯器等效果,當然也支援非同步處理的Ajax功能。
另外,Ajax由於以動態方式操作檔案物件,導致使用者習於使用上一頁、下一頁的功能無法使用,也無法利用像是「我的最愛」的功能,將使用者所需 的頁面留下正確的書籤,但這些需求Dojo都已有解法。比起其他輕巧型的Ajax架構,要摸熟Dojo顯然要下較多的功夫才能掌握,目前檔案較少也是個問題。不過由於它的功能更為完整,因此開發人員需要 自行加工的地方就相對較少。
3.可由JavaScript呼叫Java文法
DWR是設計給Java語言的Ajax架構,讓開發人員可以利用JavaScript程式呼叫Java文法。DWR的運作可分為兩個部分,一方面用在瀏覽器上,處理串連伺服器端Java程式,另一部分則是用來展示回傳資料。透過DWR呼叫Java的函式, 它會處理串連處理的細節,而當資料被處理完成後,DWR就會執行回呼函式,以進行後續呈現的處理。
在安裝DWR時必須編輯Web應用程式的部署描述檔案,而且也要編輯DWR特定檔案。 DWR配置檔案指定了可以遠端建立和呼叫的類別。檔案中包含伺服器程式碼的JAR檔案,另外還有JavaScript檔案,提供一些輔助函式,處理互動呈 現的效果。
DWR最大的好處就在於讓Java開發人員可以利用熟悉的文法來處理頁面與資料,並且能配合Struts、Tapestry來使用。不過從使用者端呼 叫遠端伺服器的Java程式,仍存在一些安全上的疑慮,在使用時必須注意。
4.以易用性、簡化文法為目標
jQuery是最近大受矚目的Ajax架構,它以Prototype為本,簡化並提升JavaScript文法的功能。jQuery有點像是將Prototype所做的事再推向極端,讓使用者改變原有撰寫JavaScript的方法。它最為人稱道的地方,就在於強大 的存取頁面元素功能,無論是檔案的節點、CSS的選取子或Xpath運算式,都能利用「$ )」函式快速存取,並賦予它更多的功能。BKJIA相關文章推薦:使用jQuery簡化Ajax開發)
此外,它的chainable方法能將一串處理函式結合在一起,讓程式碼更為簡潔。另外jQuery也提供一些動態效果,不過和其他架構相比,這部 分就顯得陽春許多。
jQuery的優劣其實都在同一件事情上,一方面它簡化JavaScript的文法,讓撰寫程式更為簡便,就好用的目的而言,的確是相當成功。然而 這卻讓JavaScript的程式碼會發展成另一種樣子,對於初學者而言,一開始學習時,必須要花點時間去適應。