Ajax 的六個(gè)誤區(qū)小結(jié)分析
讓我們看看有關(guān)Ajax的幾個(gè)誤區(qū),撥開(kāi)迷霧、發(fā)掘真相。
誤區(qū)一:AJAX 是Asynchronous JavaScript and XML 的縮寫(xiě)。你寫(xiě)這個(gè)詞時(shí),應(yīng)該用大寫(xiě)字母拼寫(xiě),要不就顯得很無(wú)知。
事實(shí)上,根據(jù) Ajax 這個(gè)詞的創(chuàng)造者Jesse James的介紹,Ajax可不僅僅是個(gè)縮寫(xiě)詞。它是一系列技術(shù)用特定方式結(jié)合在一起的整體。它包括JavaScript,CSS, DOM 和運(yùn)用 XMLHttpRequest 對(duì)象進(jìn)行客戶(hù)端與服務(wù)器間的數(shù)據(jù)傳輸。從服務(wù)器傳到客戶(hù)端的數(shù)據(jù)格式不一定是XML,還可以是 JSON(Javascript 中的對(duì)象)或其他數(shù)據(jù)格式??傊?dāng)?shù)據(jù)的傳輸是少量、遞增的(譯者:而不是傳統(tǒng)的刷新整個(gè)頁(yè)面)。所以,你要是想顯擺一下自己是很懂的技術(shù)高手,用Ajax,而不是AJAX。您自己判斷是不是想顯擺自己吧。
誤區(qū)二:看看Gmail和Google Map吧,Ajax 會(huì)讓你的網(wǎng)站可用性更強(qiáng)。
事實(shí)上,使用Ajax 有可能讓你的網(wǎng)站可用性增強(qiáng),但也可能使你的網(wǎng)站變得讓人可憎得難用。全新設(shè)計(jì)的Yahoo 電視節(jié)目列表就是這樣一個(gè)反面教材。(譯者:對(duì)新版Yahoo電視節(jié)目列表的反面評(píng)價(jià)主要認(rèn)為Ajax的翻頁(yè)功能讓原來(lái)一頁(yè)上列出所有電視節(jié)目的可用性變得更差,比如不能在一頁(yè)中進(jìn)行查找等,雖然翻頁(yè)功能本身做得很漂亮。)
誤區(qū)三:Ajax只是面子工程--僅僅是表面上看著挺酷和視覺(jué)效果。
事實(shí)上,如果有正確的設(shè)計(jì)和實(shí)施,Ajax 的網(wǎng)絡(luò)應(yīng)用應(yīng)該比傳統(tǒng)的CGI類(lèi)型的,以服務(wù)器端處理為主體的(如ASP.NET或Java Server Pages,JSP)網(wǎng)絡(luò)應(yīng)用具有更好的可擴(kuò)展性,和讓用戶(hù)體驗(yàn)到更快的反應(yīng)速度。如需要了解技術(shù)細(xì)節(jié),請(qǐng)參見(jiàn)IBM的Bill Higgins寫(xiě)的有關(guān)Ajax和REST的第一部分。這是我的總結(jié):傳統(tǒng)的CGI類(lèi)型的,以服務(wù)器端處理為主體的網(wǎng)絡(luò)應(yīng)用,客戶(hù)端不保存(網(wǎng)絡(luò)應(yīng)用執(zhí)行的)狀態(tài)(Stateless),狀態(tài)的保存完全由服務(wù)器實(shí)施(Stateful server)。這使得服務(wù)器產(chǎn)生的結(jié)果(譯者:比如動(dòng)態(tài)從數(shù)據(jù)庫(kù)讀取的數(shù)據(jù))只能一次性使用而不能被緩存(cache)下來(lái)再利用。這破壞了REST構(gòu)架中的可擴(kuò)展性原則。而Ajax能將狀態(tài)保存在客戶(hù)端,從而實(shí)現(xiàn)常用資源,如重復(fù)使用的數(shù)據(jù)和源程序(譯者:應(yīng)該是指Javascript),可以有效被緩存和再利用。
誤區(qū)四:Ajax 對(duì)于一般網(wǎng)絡(luò)開(kāi)發(fā)人員很難掌握
Ajax 確實(shí)不容易。但它的使用難度正在逐步降低。有若干因素造成Ajax的實(shí)施難度:對(duì)不同瀏覽器兼容性的支持,開(kāi)發(fā)工具的不足,以及對(duì)開(kāi)發(fā)人員思維方式轉(zhuǎn)變的要求--從過(guò)去以服務(wù)器端處理為主體的網(wǎng)絡(luò)應(yīng)用,轉(zhuǎn)變到新的在客戶(hù)端保存狀態(tài)、逐步上傳數(shù)據(jù)的應(yīng)用。但由于A(yíng)jax越來(lái)越普及,很多開(kāi)發(fā)工具和平臺(tái)提供商以及開(kāi)源軟件開(kāi)發(fā)者都在著力解決這一問(wèn)題。這里列出若干對(duì)Ajax開(kāi)發(fā)員有用的工具:Google 網(wǎng)絡(luò)開(kāi)發(fā)工具箱(給Java開(kāi)發(fā)員的),dojo跨瀏覽器平臺(tái),script.aculo.us 長(zhǎng)于提供視覺(jué)效果,以及用來(lái)調(diào)試JavaScript 程序、監(jiān)視XMLHttpRequest的(FireFox插件)Firebug,等等。
誤區(qū)五:Ajax 會(huì)破壞用戶(hù)使用瀏覽器的體驗(yàn)(Ajax breaks the browser model)
確實(shí),Ajax的應(yīng)用有可能造成瀏覽器使用的問(wèn)題,如破壞“返回鍵” 功能,讓用戶(hù)不知所以,讓有殘障的用戶(hù)完全無(wú)法使用網(wǎng)站。但傳統(tǒng)技術(shù)也可能產(chǎn)生類(lèi)似問(wèn)題:如使用框架(frames)或者Flash往往也會(huì)破壞“返回鍵” 功能;即便不用Ajax,糟糕的設(shè)計(jì)也能讓一個(gè)網(wǎng)站把用戶(hù)完全搞暈;即便使用最單純的HTML也很難做到讓有殘障的用戶(hù)順利使用網(wǎng)站。這些是需要有意識(shí)地去注意和學(xué)習(xí)的方面,并不是僅存在于A(yíng)jax應(yīng)用中的問(wèn)題。
誤區(qū)六:Ajax 是web2.0的關(guān)鍵組成部分
這要看你如何定義web2.0了。我認(rèn)為web2.0和web1.0的區(qū)別主要在于社會(huì)層面而不是技術(shù)層面。從web1.0 到web2.0最重要的范式轉(zhuǎn)變(paradigm shift)在于web2.0是雙向的網(wǎng)絡(luò),可讀寫(xiě)的網(wǎng)絡(luò)和社會(huì)網(wǎng)絡(luò)。而不是“讓我們開(kāi)家網(wǎng)上商店”的那個(gè)網(wǎng)絡(luò)。按照這個(gè)定義,我們可以完全不用Ajax來(lái)實(shí)施web2.0。大多數(shù)博客不用Ajax;沒(méi)有Ajax,維基百科照樣能煥發(fā)它的異彩;社會(huì)化網(wǎng)絡(luò)也不需要Ajax;Flickr 之所以吸引人是因?yàn)樗且粋€(gè)照片的社會(huì)化平臺(tái),而不是它使用的DHTML技術(shù)。
更多Ajax的相關(guān)資料(譯者:建議深度閱讀、推薦和翻譯)
我個(gè)人最喜歡的有關(guān) Ajax 的博客是Ajaxian 和 Shelley Power的“技術(shù)女狂人” 。Shelley 寫(xiě)的《添加Ajax》很快將會(huì)由O'Reilly 出版。而本文的寫(xiě)作參考了Bill Higgins 的關(guān)于A(yíng)jax和REST構(gòu)架的文章(第一部分,第二部分。)
聲明:IBM是我的客戶(hù)。
譯者:壓題圖片是原作者的照片。另外,原文上有原作者詳細(xì)的聯(lián)系方式。
相關(guān)文章
AJAX避免用戶(hù)重復(fù)提交請(qǐng)求實(shí)現(xiàn)方案
為了避免因某些原因用戶(hù)同時(shí)多次點(diǎn)擊按鈕,提交重復(fù)的請(qǐng)求,我們需要禁用請(qǐng)求提交按鈕,接下來(lái)與大家一起分享下實(shí)現(xiàn)方法2013-04-04ajax請(qǐng)求后臺(tái)得到j(luò)son數(shù)據(jù)后動(dòng)態(tài)生成樹(shù)形下拉框的方法
今天小編就為大家分享一篇ajax請(qǐng)求后臺(tái)得到j(luò)son數(shù)據(jù)后動(dòng)態(tài)生成樹(shù)形下拉框的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-08-08AJAX應(yīng)用實(shí)例之檢測(cè)用戶(hù)名是否唯一(實(shí)例代碼)
本文通過(guò)實(shí)例代碼給大家介紹了AJAX應(yīng)用實(shí)例之檢測(cè)用戶(hù)名是否唯一,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-09-09ie發(fā)送ajax請(qǐng)求返回上一次結(jié)果的解決方法
這篇文章主要介紹了ie發(fā)送ajax請(qǐng)求返回上一次結(jié)果的解決方法,需要的朋友可以參考下2014-03-03非常簡(jiǎn)單的Ajax請(qǐng)求實(shí)例附源碼
這篇文章為大家推薦了一個(gè)非常簡(jiǎn)單的Ajax請(qǐng)求實(shí)例,可以在不重載頁(yè)面的情況與 Web 服務(wù)器交換數(shù)據(jù),感興趣的小伙伴們可以參考一下2015-11-11ajax三級(jí)聯(lián)動(dòng)的實(shí)現(xiàn)方法
這篇文章主要為大家詳細(xì)介紹了ajax三級(jí)聯(lián)動(dòng)的實(shí)現(xiàn)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03AJAX實(shí)現(xiàn)JSON與XML數(shù)據(jù)交換方法詳解
這篇文章主要介紹了AJAX實(shí)現(xiàn)JSON與XML數(shù)據(jù)交換方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧2023-01-01