一、AJAX最值得稱贊的是異步交互,而不是無刷新
很多人都看好AJAX無刷新的技術(shù),以至于認同AJAX就是用來做無刷新的。這個認識是錯誤的,什么是無刷新?無刷新就是頁面無需重載,那什么又是異步交互?異步交互就是一個簡單的多線程,當你在一個blog里看文章時,同時也可以利用AJAX進行無刷新的回復(fù)提交,看起來雖然也是無刷新,但這里最重要的是異步,即你能一邊看文章,一邊又能向服務(wù)器提交你的回復(fù)信息,利用好這個異步,才能算是掌握了AJAX的精髓。很多場合,無刷新是呈現(xiàn)給用戶的視覺體驗,而異步交互卻是默默無聞的工作在臺后,這種情況導(dǎo)致大多數(shù)人的錯誤理解了AJAX的權(quán)重之分。
二、推薦在WEB上輕量級的應(yīng)用AJAX
通過以上兩個國外成功應(yīng)用AJAX的網(wǎng)站,我們發(fā)現(xiàn)他們都使用的是輕量級的AJAX,就是那種交互簡單,數(shù)據(jù)較少的操作。這也符合AJAX的本意,雖然像 www.backbase.com 和 bindows 都在RIA上有驚人的表現(xiàn)能力,但是速度慢、 搜索引擎支持不好 、開發(fā)難度大等毛病還是無法讓用戶滿意的,請記住:AJAX的最終目的是為了提高用戶體驗,為了方便用戶交互,而不是因技術(shù)而技術(shù)的。
三、AJAX的MVC架構(gòu)設(shè)計
很多人認為在成熟的框架中應(yīng)用AJAX會破壞框架的完整性,比較常見的說法有三層架構(gòu)的WEB應(yīng)用中破壞MVC模式,其實不然。MVC的理論我就不多說了,經(jīng)典的那三個層、五條線大家都很熟悉,在WEB應(yīng)用中,因為瀏覽器/服務(wù)器固有的這種請求/響應(yīng)的斷開式網(wǎng)絡(luò)通訊模式,決定了在Model層無法實現(xiàn)主動向View層發(fā)出數(shù)據(jù)更新事件,所以一般常見的成熟MVC框架中都將經(jīng)典MVC理論稍作修改:由Model層處理完業(yè)務(wù)后通知Control層,然后由Control層承擔向View發(fā)送數(shù)據(jù)更新的義務(wù)。但是AJAX天生具有監(jiān)聽功能,AJAX實現(xiàn)異步響應(yīng)的那個OnReadyStateChange事件就具有在客戶端程序中才會有的事件監(jiān)聽功能。現(xiàn)在想來,利用AJAX實現(xiàn)的MVC模型有如下圖這樣:
理想化的設(shè)計如下所示:
- 三層對應(yīng)的文件對象:view.jsp(視圖)、action.do(控制器)、model.java(模型)
- view.jsp是用戶看到的界面,并通過內(nèi)置的AJAX對象異步方式給action.do發(fā)送請求,AJAX.OnReadyStateChange開始監(jiān)聽
- action.do接收到view.jsp發(fā)過來的請求(GET或者POST方式),通過Request判斷后發(fā)送給相應(yīng)的業(yè)務(wù)/數(shù)據(jù)模型model.java
- model.java開始執(zhí)行業(yè)務(wù)操作,執(zhí)行完畢直接給view.jsp頁面發(fā)送數(shù)據(jù)更新的通知,這個通知的消息有可能是XML封裝的數(shù)據(jù),也有可能是一段文本,甚至是一段HTML代碼,當然,既然用MVC,不推薦有Model發(fā)送HTML,推薦還是用XML封裝業(yè)務(wù)數(shù)據(jù)即可。
- view.jsp頁面中AJAX對象的OnReadyStateChange接收到了數(shù)據(jù)更新通知,根據(jù)實際情況用DOM進行頁面呈現(xiàn)更新。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
