《Ajax模式與最佳實(shí)踐》試讀感想
作者Christian Gross是一位咨詢(xún)顧問(wèn)、培訓(xùn)師和技術(shù)指導(dǎo),在互聯(lián)網(wǎng)領(lǐng)域有著非常豐富的經(jīng)驗(yàn)。 作者很多觀點(diǎn)可能有些片面,可能與他在互聯(lián)網(wǎng)領(lǐng)域豐富的經(jīng)驗(yàn)有關(guān)。如:ajax好象不是只用數(shù)據(jù),而不反饋數(shù)據(jù)吧! 看書(shū)有個(gè)習(xí)慣,對(duì)于前言附錄之類(lèi)的往往看的特別認(rèn)真。尤其是這類(lèi)講解"較新技術(shù)"的書(shū)籍,往往表達(dá)了作者對(duì)新技術(shù)的思考、觀點(diǎn),以及 作者的沉淀。 隨便摘作者幾個(gè)觀點(diǎn)說(shuō)說(shuō): 一、Ajax之所以是Ajax,是因?yàn)檫@些新的技術(shù)可以以嶄新的和有趣的方式來(lái)相互組合 強(qiáng)調(diào)了多次,但很容易被我們忽視。編寫(xiě)Ajax,卻忽視了REST、忽視了XML、忽視了JSON、甚至忽視了JavaScript,可能我們都是忽視某些 技術(shù)的一員。 但我們也沒(méi)辦法,我們不可能掌握如此多的技術(shù),也可能處理不好它們之間的關(guān)系。所以各種ajax框架/tools都被大家青睞。 舉兩個(gè)例子: 1、echo2/gwt/jsf-ajax,這種服務(wù)器端語(yǔ)言編寫(xiě)“ajax”應(yīng)用的框架是javascript/dom/css生疏者的首選。對(duì)于我這種略懂javasccipt/dom/c ss的技術(shù)人員來(lái)說(shuō),很難接受這類(lèi)框架。相信從asp走來(lái)的很多web開(kāi)發(fā)人員也不愿意用這類(lèi)框架。 這類(lèi)框架選擇人員很可能是熟悉后臺(tái)開(kāi)發(fā)的工程師,這些人心里怯喜,我不用學(xué)javascript/som/css等就可以開(kāi)發(fā)出如此玄的效果。但是任 何公司開(kāi)發(fā)web應(yīng)用會(huì)沒(méi)有前臺(tái)設(shè)計(jì)師(或許真是如此)嗎?如果前臺(tái)設(shè)計(jì)人員可以用javascript/dom/css達(dá)到比gwt更好效果師你還會(huì)用它們 嗎? 2、prototype.js/jquery/dwr... 這類(lèi)工具庫(kù)或者語(yǔ)言擴(kuò)展庫(kù)為我們提供了什么,難道用它們的應(yīng)用程序就是ajax應(yīng)用程序嗎(偶也不清楚什么才算ajax應(yīng)用程序)?難道我 寫(xiě)$()和document.getElementById()對(duì)我的應(yīng)用有實(shí)際的改觀嗎? 3、dojo dojo很優(yōu)秀,功能也很強(qiáng)大。是否你也與我有同樣感覺(jué)。拿到他不知該如何合適的引入到項(xiàng)目中,可能我們還不能完全的熟悉dojo,我們都 不知道系統(tǒng)是否需要dojo提供的功能。(把prototype.js介紹給同事,他們只用了prototype.js 3%-5%的函數(shù)) 它們只能方便開(kāi)發(fā)人員,提高開(kāi)發(fā)效率。但軟件的質(zhì)量不是效率。 ...... 如果看到這,估計(jì)還沒(méi)明白我扯了半天什么??偨Y(jié)一下: a、ajax是為了使 1+1>2,而不是讓我們更容易、更迅速的得到 1+1=2; b、很多人眼中ajax就是framework/toolkit.注意Dojo也只是 a JavaScript toolkit. (在我眼中,dojo給我最大的收獲是, dojo widgets讓我 了解ajax UI的生命周期) c、從應(yīng)用角度考慮ajax吧。dwr只是能 方便 你無(wú)刷新的獲取提交數(shù)據(jù)。你需要關(guān)心的是無(wú)刷新三個(gè)字,而不要太多考慮在dwr/json-rpc/Buffalo選擇上爭(zhēng)論不休。 d、既然ajaxjvascript/dom/css.....組成,你開(kāi)發(fā)的時(shí)候可以不考慮它們,但設(shè)計(jì)的時(shí)候呢?不知大家有無(wú)這樣體會(huì),設(shè)計(jì)web界面時(shí),找來(lái) 一堆widget庫(kù),拼裝成一組頁(yè)面。 二、Ajax代表著一種嶄新的建造應(yīng)用的方式 這個(gè)提法不錯(cuò),走出思維定視。 太多的ajax PK 傳統(tǒng)web/ajax PK 桌面,恰恰反映了大家對(duì)ajax的關(guān)注或恐慌。從技術(shù)角度比較我比較喜歡,但很多時(shí)候大家很難從想同 的高度,相同的起點(diǎn)出發(fā)考慮問(wèn)題。俺也沒(méi)必要管那么多了,但毫無(wú)疑問(wèn), ajax代表著一種嶄新的建造應(yīng)用的方式??蛻?hù)端與服務(wù)器端進(jìn)行了解耦,數(shù)據(jù)與表現(xiàn)分離 這種新的方式我無(wú)法描述,書(shū)中也沒(méi)細(xì)找,可能誰(shuí)也不好給個(gè)總結(jié)。但很喜歡這種提法,但我感覺(jué) javascript/dom/css 不是最好的實(shí)現(xiàn) 技術(shù),但http是最適合的協(xié)議。ajax被替代,最主要原因是 瀏覽器支持標(biāo)準(zhǔn)的不統(tǒng)一,javascript/dom/css標(biāo)準(zhǔn)問(wèn)題。dlee認(rèn)為ajax發(fā)展最大 組力是標(biāo)準(zhǔn),我想阻力也不小。 試想 如果我們編寫(xiě) javascript/dom/css 根本不用考慮版本、是否被支持,那該是一種什么光景。 醒來(lái)寫(xiě)過(guò)篇文章,他公司開(kāi)發(fā)的一個(gè)“圖片瀏覽”系統(tǒng),參考了***等幾個(gè)例子,據(jù)他說(shuō)從幾個(gè)例子中學(xué)到prototype/script.aculo.us等 不少妙用??戳四菐讉€(gè)例子,有個(gè)感覺(jué),“我怎么想不到呢?”。如何用"ajax"思想構(gòu)建系統(tǒng),更好的應(yīng)用ajax思想,這么書(shū)給了我們捷徑。 再說(shuō),ajax的老鼻子,google maps/google mail,帶給我們的是應(yīng)用沖擊,而不是技術(shù)沖擊。后來(lái)冒出多少 **maps/** mail。 只有想不到,沒(méi)有做不到。放到ajax這個(gè)階段最好。我們盡量考慮如何應(yīng)用ajax技術(shù)提升你的應(yīng)用競(jìng)爭(zhēng)性吧!讓那些“高人”考慮做到做 不到吧。 三、關(guān)于ajax服務(wù)器端框架 摘作者一段話(huà): 某些個(gè)別人很喜歡販賣(mài)某種服務(wù)器端框架,據(jù)說(shuō)可以依賴(lài)此框架來(lái)實(shí)現(xiàn)Ajax。如果Ajax對(duì)于客戶(hù)端和服務(wù)器端的解耦是重要的,為何必須 要使用一個(gè)服務(wù)器端框架來(lái)實(shí)現(xiàn)Ajax?這樣的邏輯簡(jiǎn)直毫無(wú)意義。我能夠理解的一個(gè)論點(diǎn)是,可以擴(kuò)展一個(gè)框架來(lái)支持Ajax一類(lèi)的架構(gòu)設(shè)計(jì)。 但是我不能接受這樣的論點(diǎn),即,一個(gè)服務(wù)器端框架是開(kāi)發(fā)Ajax應(yīng)用所必需的。 如果你看了這本書(shū),可能你會(huì)同意作者的觀點(diǎn),因?yàn)樽髡哂幂^高的角度來(lái)看ajax??梢詳U(kuò)展一個(gè)框架來(lái)支持Ajax一類(lèi)的架構(gòu)設(shè)計(jì),是的, 可以減輕我們開(kāi)發(fā)難度,但僅僅是對(duì)開(kāi)發(fā)人員開(kāi)發(fā)效率的角度。對(duì)軟件質(zhì)量提升作用不大。 其實(shí)不光是ajax,webwork/struts,.net/j2ee,爭(zhēng)論何時(shí)修。 四、模式列表 第3章 內(nèi)容分塊模式 第4章 緩存控制器模式 第5章 置換模式 第6章 解耦導(dǎo)航模式 第7章 表現(xiàn)變形模式 第8章 持久通信模式 第9章 狀態(tài)導(dǎo)航模式 第10章 無(wú)限數(shù)據(jù)模式 第11章 基于REST的模型-視圖-控制器模式 很可惜,我們一般開(kāi)發(fā)ajax應(yīng)用都是基于一定的ajax框架,很多框架都實(shí)現(xiàn)的某些或其他的模式,如何實(shí)現(xiàn)這些模式或應(yīng)用它們對(duì)我們來(lái)說(shuō), 也是個(gè)麻煩事。 很不錯(cuò)的一些最佳實(shí)踐,是我們開(kāi)發(fā)ajax-REST好的參考書(shū)。如果大家有興趣開(kāi)發(fā)這類(lèi)應(yīng)用,yahoo javascript center http://developer.yahoo.com/javascript/ 有些不錯(cuò)的文章。 有些引用不是譯者最終定稿。感謝譯者做的工作! |
|