ajax的缺點
作者:佚名 來源:不詳 發布時間:2006-12-9 15:15:11
減小字型 增大字型
在某網站瞎逛時,發現這個連結,進去逛了逛,覺得很有意思,大家也可以去看看,姑且不論你是否同意裡面的觀點,看看別人看待ajax的角度,這對於理解一個事物很有協助。
下面是我對一部分缺陷的看法:
為Ajax而Ajax(Using Ajax for the sake of Ajax.)
很同意這點,當一個技術本身的生存意義由於它自身的亮點而被抹殺,不知道是這個技術的幸運還是不幸。
幹掉了back按鈕(Breaking the back button)
back按鈕是一個標準的web網站UI的重要功能。然後,後退按鈕沒法和js很好的合作……
gmail似乎作的很好?不過沒去仔細看過gmail如何?後退和js相容的,被這個mistake一提醒,也許這也是ue的一個切口哦。
點擊的時候沒有提供一個可視化的提示(Not giving immediate visual cues for clicking widgets)
……也許是我沒看懂,覺得寫這段的人自相矛盾。。他說沒提供可視化提示,不過是拿gmail右上方的紅色提示作為例子。
阻擋了離線使用者於門外(Leaving offline people behind)
看標題就清楚了,不過我持保留意見,web application和離線瀏覽本身似乎就存在著矛盾,要整合,可能要動很多腦子
別讓我等(Don't make me wait)
不過,ajax本身就存在著如果用戶端的頻寬不夠,它的展示就會一塌糊塗的問題,這是它的先天缺陷,也是它崛起的先天因素--由於網速和頻寬的不斷增大,使得服務端與用戶端的頻繁通訊成為可能。
顯式的傳遞敏感資訊(Sending sensitive information in the clear)
使用js傳遞資料,本身似乎就存在著這個風險,在我找到反對意見之前,我傾向認同這點--https協議除外。
假設ajax發展是一個單平台的發展。(Assuming AJAX development is single platform development)
作者文中的觀點是ajax由於必須相容多個瀏覽器,而沒法做到只需要編碼到標準的js就行,還要考慮到各個瀏覽器的問題……這個是js的問題,和ajax關係不大吧?
忘掉了可能多人在同時使用同一個應用(Forgetting that multiple people might be using the same application at the same time)
嗯,這其實是一個同步的問題,在b/s系統中這是一個麻煩的問題……當然,也許並不麻煩,做一個標記位就解決了吧?
太多代碼讓瀏覽器慢下來(Too much code makes the browser slow)
呃……同意這點,雖然在代碼最佳化之後會有很大改善,但js本身運行速度慢這個缺陷還是會成為一個瓶頸。
不計劃要那些禁用或者沒有js的使用者(Not having a plan for those who do not enable or have JavaScript)
呃……我在頁面上用ajax的時候就準備放棄這些使用者了,我沒google那麼閑,作兩套系統,一套用ajax,一套純頁面。不過養成一個良好的編碼習慣還是有必要,比如在超連結中不要直接設定href="javascript:..."而使用onmouseup或者onclick來觸發事件,偶爾也為別人考慮考慮嘛,而且我也不能保證我的js程式在所有的瀏覽器上通吃。
不期然的頁面閃爍和改變(Blinking and changing parts of the page unexpectedly)
我沒經曆過以前網頁中blink標籤的騷擾,所以我對作者的反感有點摸不著頭腦,我覺得在適當的提示之後重新整理某塊頁面總比整個頁面的重新整理看起來舒服。
沒法把超連結發給朋友以及收藏(Not using links I can pass to friends or bookmark)
嘿嘿,這就是我上面提及的那點,如果編碼習慣夠好--而且時間夠多,在超連結中為非js使用者和js使用者提供兩套方案是可行的。
同步導致的大量操作(Asynchronously performing batch operations)
作者的意思是說ajax一次性把原來要分幾次作的操作一次做掉,而導致他沒法跟蹤每個元素變化,沒法回溯,呃……也許是有這種需求吧。。不過似乎也是可以解決的吧?
導致頁面滾動並讓我迷失位置(Scrolling the page and making me lose my place)
作者認為插入文本到一個頁面中會導致頁面發生滾動,並讓其迷失方向,我沒看過這麼噁心的效果,沒法評價,不過我對於一些ajax的導航作的不好表示不滿意,我經常會迷失於一些ajax程式中而不知道我剛才上一步到了哪裡……
發明了新的UI習慣(Inventing new UI conventions)
呵呵,作者用了一句話來描述這個缺點:"點擊一個不明顯的東東來產生一個不明顯的結果"。這個歸納倒是滿準確的,在很多ajax程式中,使用者完全是作為一個瞎子,在抖抖索索的摸著這個ajax程式大象,在到處瞎點一氣並瞎拖一氣之後才掌握這個程式的用法。但是換個角度來說,最開始的web頁面不也是一樣?沒有開始的困難接觸,不會有之後的進步,只要有足夠的協助,上手任何東西都應該不會太難--除非這東西本來就不想讓人覺得好用,那就是其它的問題了。
阻止了爬蟲(Blocking Spidering)
同意這點,我在猶豫著使用ajax的時候,就在考慮爬蟲對js的不感冒,以及爬蟲該如何理解我那些以奇怪方式載入的頁面,去解析ajax庫似乎是一個不可能的事情,爬蟲又不是人腦,如果爬蟲可以媲美人腦,那就是《駭客帝國4》了。
字元集(Character Sets)
ajax本身對字元集的支援比較缺失,這個這個……設定成utf-8吧,不過作者最後也是這麼說的。
使用超連結改變狀態(Changing state with links (GET requests))
作者認為主流的ajax應用程式都是用get方式來工作,而這違反了W3對GET和POST方法的使用建議……我少見多怪,主流的ajax應用程式我沒怎麼去看,不知道是不是真的都用get,雖然ajax編碼用get簡單,但不表示ajax不能用post吧?
沒有連帶改變頁面中其它相關部分(Not cascading local changes to other parts of the page)
因為ajax讓人很容易控制頁面中的特定部分,所以也容易導致過於關注某個點而失去對整體布局的關注。嗯嗯……這是編碼的問題,表怪到ajax頭上。
問題報告(Problem reporting)
作者認為服務端的程式錯誤,很容易再現並捕捉,而用戶端的錯誤要重現就比較麻煩,嗯,支援這點,不過還是和ajax關係不大……
投資回報(Return on Investment)
作者認為ajax能夠提升應用程式的可用性,但是富用戶端程式並不會比純html版本好多少……忽略這個觀點,來人,把作者拖出去,賬責五十
拙劣地模仿瀏覽器頁面跳轉行為(Mimicing browser page navigation behavior imperfectly)
……忽略,沒看到作者所描述的情況。