Alex Bosworth’s Weblog 最近有一篇 《Ajax Mistakes》,列舉了一些開發者在應用 AJax 技術時容易犯的一些錯誤:
1、Not giving immediate visual cues for clicking widgets.
當用戶點擊控件時未即時給出可視的提示,用於告訴用戶現在正在加載數據。
2、Breaking the back button
破壞了返回按鈕。返回按鈕是標准網站用戶界面的重要特性,不幸的是,返回按鈕並不能很好的和 JavaScript 相吻合。
3、Changing state with links (GET requests)
使用鏈接來修改狀態。很多用戶習慣於使用鏈接進行浏覽導航-執行 GET 請求,而如果使用鏈接來改變狀態將會使這些用戶感到困惑。這個問題可以參考 Google’s new web accelerator breaks webaPPS 和 Google Web Accelerator: Hey, not so fast - an alert for web app designers,尤其是後邊這篇文章,講述了 Google Web Accelerator 的工作原理,它會對當前浏覽頁面的所有鏈接所對應的頁面進行預先獲取進行緩存(Link Prefetching 機制),而這種工作方式將忽略鏈接中的 Javascript 操作繼續向前,比如你有個刪除的鏈接,點擊之後是彈出一個 JavaScript 的確認框,詢問用戶“是否確實想要刪除?”,而 GWA 則是很直接地執行了該動作,最終導致用戶點擊這個鏈接的時候,出現了預想不到的結果。
4、Blinking and changing parts of the page unexpectedly
出乎預料地閃爍和改變部分頁面。AJax 使用的是異步消息處理機制,這意味著很難准確的預知到消息會在哪一刻進行處理,所以頁面在獲取到消息之後需要改變的頁面部分應該限制在較小區域而且要較為固定,免得嚇著用戶 。
5、Not using links I can pass to frIEnds or bookmark
網站的另一個重要功能是我可以將 URL 發給朋友,使得他們可以看到我所看到的一樣的東西,而且還可以對 URL 進行收藏,使我可以在任何想看的時候回到這個地方。由於 JavaScript 可以動態生成頁面用於替換從服務器加載的最初頁面,URL 也就失去了上述功能。很多 AJax 應用都在思考這個問題,有些為了滿足這種需求而專門地構造出固定鏈接(permalink)。
6、Too much code makes the browser slow
過多的代碼使得浏覽變慢。
7、Inventing new UI conventions
自作聰明地發明新的 UI 約定。新的 UI 界面及操作習慣會導致在用戶使用你的應用程序的時候感到非常困難,而且他/她還要花時間去學習如何使用。
8、Not cascading local changes to other parts of the page
不要只顧局部改變。使用 AJax,你必須在考慮局部改變的同時考慮到整體的畫面協調。
9、Asynchronously performing batch Operations
異步地執行批量操作。
10、Scrolling the page and making me lose my place
自動滾動頁面,導致用戶丟失自己先前的浏覽位置。
其實就目前而言,AJAX 應用還不是很成熟,很容易就會導致復雜度的爆炸性增長,所以暫時還是在部分功能上進行應用比較合適,否則你會陷入到無止境的調試的恐怖深淵 。比如,在用戶注冊提交前,使用 AJAX 進行用戶名判重的操作是個很不錯的應用;還有就是多個下拉列表框,他們之間存在線性依賴關系,則可以在選擇第一個下拉框之後,使用其選中的值加載第二個下拉框中的數據,這也是個很好的應用(Demo)。總之,在成熟模型出來之前,還是不要大規模應用 AJAX 比較好,而且每一種技術都有其優缺點,雖然 AJAX 很流行,但它並不是適合任何場合的,更何況當前 AJax 還有個很棘手的問題,那就是服務端無法及時准確地對客戶端用戶行為、狀態進行跟蹤記錄,而通過客戶端自行跟蹤記錄又極易出錯。