構(gòu)建Flex應(yīng)用時(shí)常見(jiàn)幾大誤區(qū)解析
本文和大家重點(diǎn)討論一下構(gòu)建Flex應(yīng)用的幾大誤區(qū),F(xiàn)lex是一個(gè)開(kāi)源的應(yīng)用開(kāi)發(fā)框架,用來(lái)構(gòu)建運(yùn)行在 web(使用 Flash Player)或者桌面上(使用Adobe AIR)的富Internet應(yīng)用,但是今天讓我們瞧瞧構(gòu)建Flex應(yīng)用時(shí)經(jīng)常犯的錯(cuò)誤。
構(gòu)建Flex應(yīng)用的幾大誤區(qū)
在這篇新聞中,Adobe的James Ward與InfoQ.com一起為你帶來(lái)了Flex的另一種10大(Flex***的10大)。Flex是一個(gè)開(kāi)源的應(yīng)用開(kāi)發(fā)框架,用來(lái)構(gòu)建運(yùn)行在 web(使用 Flash Player)或者桌面上(使用Adobe AIR)的富Internet應(yīng)用??傊現(xiàn)lex是一個(gè)強(qiáng)大易用的框架,但是今天讓我們瞧瞧構(gòu)建Flex應(yīng)用時(shí)經(jīng)常犯的錯(cuò)誤。
對(duì)于Flex新手,請(qǐng)閱讀InfoQ最近的Adobe Flex Basics以對(duì)該框架有一個(gè)快速的了解。下面是易犯的錯(cuò)誤列表:
1. 使用RIA框架去構(gòu)建Web1.0應(yīng)用(新技術(shù)換湯不換藥)
從Web 1.0到RIA的過(guò)渡中***的挑戰(zhàn)之一來(lái)自思考方式的轉(zhuǎn)變。Flex給予開(kāi)發(fā)者一個(gè)高級(jí)的組件庫(kù),使其可以完成很多以前不可能完成的任務(wù)。但是很多時(shí)候,F(xiàn)lex的這種能力被忽略了,它僅僅被用來(lái)實(shí)現(xiàn)更加傳統(tǒng)的Web 1.0應(yīng)用。
構(gòu)建Web 2.0應(yīng)用不僅僅意味著頁(yè)面的局部刷新和旋轉(zhuǎn)的圓角圖標(biāo)。例如,F(xiàn)lex開(kāi)發(fā)者應(yīng)使用矢量圖向用戶提供數(shù)據(jù)的可視化表示,以及對(duì)于富應(yīng)用流的高級(jí)控制。最近Stephan Janssen與InfoQ.com一起討論了該議題:
作為一個(gè)Java開(kāi)發(fā)者,對(duì)于面向?qū)ο蟮腁ctionScript和UI標(biāo)記語(yǔ)言的學(xué)習(xí)簡(jiǎn)直就是小菜一碟。但是對(duì)于(Java)開(kāi)發(fā)者來(lái)說(shuō)真正的挑戰(zhàn)在于我們不是設(shè)計(jì)師,并且這兩個(gè)技術(shù)對(duì)于RIA來(lái)說(shuō)是必不可少的。
2. 破壞標(biāo)準(zhǔn)的瀏覽器體驗(yàn)
盡管Flex確實(shí)提供了一個(gè)優(yōu)秀的平臺(tái)以改善用戶體驗(yàn),但是保持用戶習(xí)慣,如后退按鈕、書(shū)簽和自動(dòng)完成也是相當(dāng)重要的。
Flex 3包含了新的深層鏈接特性以支持后退按鈕和書(shū)簽。你可以訪問(wèn)labs.adobe.com來(lái)了解更多。那有很多組件能夠?qū)崿F(xiàn)自動(dòng)完成。你可以使用來(lái)自于Adobe Exchange的AutoComplete Input組件。
3. 使用過(guò)多的容器導(dǎo)致Flex應(yīng)用變慢
Flash Player使用了一個(gè)按層次顯示的對(duì)象圖,這一點(diǎn)與HTML的文檔對(duì)象模型(DOM)很相似。容器嵌套的層次越深,渲染所花費(fèi)的時(shí)間就越長(zhǎng)。Adobe的Flex開(kāi)發(fā)者中心有一篇文章討論了關(guān)于Flex性能的***實(shí)踐,包括了容器的使用細(xì)節(jié):
Flex***的性能風(fēng)險(xiǎn)來(lái)自于對(duì)容器的濫用。嵌套太多的容器會(huì)影響應(yīng)用的性能。這是Flex開(kāi)發(fā)者面臨的最嚴(yán)重的性能風(fēng)險(xiǎn)——不過(guò)還好,它完全能被避免。
4. 使用XML而不是其他更優(yōu)化的協(xié)議導(dǎo)致Flex應(yīng)用變慢
Flex向開(kāi)發(fā)者提供了多種選擇以在Flex客戶端和服務(wù)器之間進(jìn)行數(shù)據(jù)傳輸,包括AMF3、XML、SOAP及直接的HTTP請(qǐng)求。Ward在他的人口普查應(yīng)用中闡述了這些技術(shù)的使用及性能。
對(duì)于后端使用Java的新項(xiàng)目來(lái)說(shuō),應(yīng)該考慮一下BlazeDS。BlazeDS是Adobe最近的一個(gè)開(kāi)源數(shù)據(jù)服務(wù)產(chǎn)品,它使用了AMF3協(xié)議。AMF是一個(gè)二進(jìn)制傳輸協(xié)議,很容易與Java集成,其性能要優(yōu)于XML。對(duì)于所有主要的后端技術(shù)都有相應(yīng)的AMF開(kāi)源實(shí)現(xiàn)。
如果你不選擇BlazeDS,那么你還可以選擇Hessian。Hessian對(duì)二進(jìn)制的web services協(xié)議提供了ActionScript/Flex支持。
5. 試圖雇傭Flex開(kāi)發(fā)者
現(xiàn) 在很難找到有經(jīng)驗(yàn)的Flex開(kāi)發(fā)者。Flex現(xiàn)在正處在上世紀(jì)90年代Java所處的位置。Flex開(kāi)發(fā)者已經(jīng)供不應(yīng)求了。這就造成了難以尋覓 到有經(jīng)驗(yàn)的Flex開(kāi)發(fā)者的后果。然而,這給Java開(kāi)發(fā)者創(chuàng)造了一個(gè)很好的機(jī)會(huì)以擴(kuò)充技能,并且從事一種新興且有趣的技術(shù)。很多尋找Flex開(kāi)發(fā)者的公 司直接對(duì)Java或者其他web開(kāi)發(fā)者進(jìn)行幾周的Flex培訓(xùn),并且大獲成功。對(duì)于熟悉Web和GUI編程的開(kāi)發(fā)者來(lái)說(shuō),學(xué)習(xí)Flex語(yǔ)言和APIs易如 反掌。
6. 特效的過(guò)度使用
開(kāi)發(fā)者可以很容易地通過(guò)Flash增加特效。但是要確保特效有意義并且與上下文是匹配的。否則他們只會(huì)讓用戶反感。特效的時(shí)間選擇也很重要。交互設(shè)計(jì)器可以幫助我們決定何時(shí)應(yīng)使用特效,何時(shí)不應(yīng)該使用。交互設(shè)計(jì)器還能為我們推薦***的特效類型、間隔和最簡(jiǎn)化的功能。
關(guān)于特效的使用在laair.org上有一篇好文:
大多數(shù)的特效簡(jiǎn)直太長(zhǎng)了。它們不但長(zhǎng),而且還慢,甚至讓人反感。關(guān)掉它。如果我遇到這種事情的話,我就會(huì)轉(zhuǎn)身離去,因?yàn)槲覍?shí)在討厭這種等待。
千萬(wàn)不要誤會(huì)我,我并不是反對(duì)特效。我只是反對(duì)為了目的而做的太長(zhǎng)或者太過(guò)分的特效。每個(gè)特效都可以依照其目的進(jìn)行分解。找到你要特效的目的,然后再使用它。
【編輯推薦】