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