下面是當前網頁應用程式應該出現的地方:
基於表單的互動
表單是很慢的,非常慢。嘗試編輯位於del.icio.us上面的一個書籤?點擊編輯連結開啟一個編輯書籤的表單頁面,然後編輯你的內容並點擊提交按鈕等待整個提交過程結束,最後返回上一頁並向下滾動到你剛才編輯的書籤那裡查看內容是否已經正確更改。那AJAX呢?點擊編輯連結馬上開始更改標籤內容,點擊提交按鈕開始非同步傳輸標籤編輯的內容並立即看到更改後的內容而無需重載整個頁面。
深層樹狀導航
總而言之,帶有深層樹狀導航的應用程式通常是一個噩夢。在大多數情況中簡單平直的拓撲結構以及搜尋/標記可以很好的工作。但是如果一個應用程式真正使用深層樹狀導航,使用JavaScript來管理拓撲ui(user interface使用者介面),則使用Ajax懶載入深層資料可以降低伺服器的負載。舉例來說,為了閱讀一個只有一行的結果來載入整個一個新頁面是非常耗時的。
即時使用者對使用者通訊
在一個允許使用者建立即時討論的資訊公告系統中,迫使使用者一次又一次的更新完頁面看到回覆是非常愚蠢的。回複應該是即時的,使用者不應被迫總是去癡迷於重新整理操作。即使是gmail這個已經對以前像hotmail/yahoo mail的收件匣重新整理,重新整理收件匣標記的操作有所改進,也並沒有充分的使用Ajax的功能來提示有新郵件到達。
投票、是否選擇、等級評價
如果Ajax提交過程沒有一個協調的UI提示是非常糟糕的,通過使用Ajax來提交一個調查或是否選擇可以減少提交過程等待的痛苦。通過減少點擊的等待時間,Ajax應用程式變得越來越有互動性-如果要用40秒來提交一個投票,除非非常在意的話大多數人會選擇放棄。如果只花1秒呢,非常大比例的人會樂於參加投票的。(我在Netflix versus有2008張電影投票在IMDb.com有210張電影投票)
過濾和複雜資料操作
應用一個過濾、按日期排序、按日期和姓名排序、開啟或關閉過濾器等等。任何一種高交換型操作應該交給JavaScript來處理而不是通過向伺服器來提交一系列的請求。在尋找或者操作大量資料的時候帶來的視圖上的改變最多不會超過30秒,Ajax真的使這些操作加速了。
普通錄入時的提示/自動補齊
一些軟體/JavaScript是擅長於協助使用者完成鍵入相同的文字或可以預測的文字的工作的。在del.icio.us 和 Gmail 中該功能是非常有益的,可以用來快速增加標記/email等。
對於一個頻繁使用的應用程式諸如網頁郵件用戶端或部落格閱讀器來說,使用者有充足的時間來學習如何使用新的UI概念但是他們卻無法接受一個非常緩慢 的反應速度。這種應用為Ajax變的更加普及起到了一個完美的槓桿作用。隨著使用者使用頻率的增加,更多的Ajax組件應該加強使用者的使用體驗。
但是對於網頁應用程式來說,把每件事甚至任何事都用JavaScript來實現也是沒有意義的。Ajax只是針對一些特定的環境才能帶來顯著的 協助。在Ajax出現之前網頁應用程式已經可以工作的很好了並且目前在網頁開發中Ajax還存在著許多的缺陷和缺點。就算不從伺服器端取得一個非同步資訊 資料流一個平直的html網頁日誌也可以工作的很好。對於文檔或文檔之間的跳轉來說,老舊的純HTML仍然是最好的選擇。簡單或很少使用的應用程式就算不 用JavaScript同樣可以很好的工作。
下面是一些不應該用到Ajax的地方:
簡單的表單
就算表單是Ajax技術的最大受益人,一個簡單內容的表單,或提交訂貨單,或一次性的很少用到的表單都不應該使用以Ajax驅動的表單提交機制。總的來說,如果一個表單不是很長用,或已經工作的很好,那麼就算使用Ajax也沒有什麼協助。
搜尋
即時搜尋帶來的痛苦要遠大於他帶來的協助。這就是為什麼Google Suggest還處於beta測試而並沒有放在首頁上的原因。在Start.com Live.com上搜尋的時候你是不能使用返回按鈕來查看上一次搜尋或返回上一頁的。或許還沒有人來完成這項工作,但是完成這個工作應該是很困難的至少是不太明知的或者會因此帶來更多的麻煩。(譯註:現在已經有很多開源的架構可以實現記錄功能)
基本導航
總的來說,使用Ajax為一個基礎的網站/程式做導航是一個可怕的念頭。誰會把用來使自己的程式變的更好的時間花在編寫代碼模仿瀏覽器的行為上面?在基礎頁面中導航的操作中JavaScript是沒有用的。
替換大量的資訊
Ajax可以不用整頁重新整理來動態更新頁面中改變的一小部分。但是如果一頁上的大部分內容都需要更新,那為什麼不從伺服器那裡獲得一個新頁面呢?
顯示操作
雖然看上去Ajax是一個純UI技術,其實不是這樣的。他實際上是一個資料同步、操作、傳輸的技術。要想得到一個穩定的乾淨的網頁程式,不使用Ajax/JavaScript來直接完成使用者介面是明智的。JavaScript可以分散分布並簡單的操作XHTML/HTML DOM,根據CSS規則來決定如何讓UI顯示資料。查看
這裡(http://www.sourcelabs.com/blogs/ajb/2005/08/powering_javascript_ui_with_cs.html)
來查看如何使用CSS來替代JavaScript來控制資料的顯示。
無用的網頁小組件
滑塊選擇控制項、拖拽控制項、彈性控制項(此處原文為bouncies,不知指為何物?)、滑鼠樣式、天氣預報控制項,這些小組件應該可以被更直接的控制項代替或者為了整潔乾脆整個去掉。為了選擇一種顏色,也許滑塊選擇控制項可以選擇一個正確的陰影顏色,但是在一個商店中選擇一個價格,使用滑塊選擇控制項選到分這個單位對於使用者來說有點過分。
#javascript/ajax專欄