2008年9月14日 星期日

Flex 初認識

在寫Web Application時為了求畫面上的統暢度及User Friendly,
總是要找了一堆現成的JavaScript元件來逹到需求,也就是現在時下最流行的WEB 2.0,
又或稱Ajax技術(或稱觀念)。在使用這些Ajax套件時,必需的條件就是要懂得JavaScript、CSS、及DOM的關念。其中最不好學的應該就屬JavaScript,由於JavaScript所使用的語法太過彈性,反而在各家Liberary上所使用的方式有了各自的特色。在專案一開始時,最好就選定單一種Liberary去做為達到Ajac的元作,若在一個專案使用了多種的Liberary(通常是該Liberary未提供所需之元件時),必會造成後續在寫時語法上的混淆不清,或者是該Liberary與另一個Liberary相衝突的情況(jQuery與prototype.js有了換實體名的解決方式),再者敝人在開發過程中,對於JavaScript的debug,確實有不好debug的情況,debug過程現在都是依賴FireBug,再不然就是使用最常使用的alert在每一行程去埋打印程式碼,打印程式碼確實可以清楚的trace到程式中實際運作的狀況,但對於要拿掉打印程式,卻又要再花上一大段工,很花時間。再者,寫WebApplication還有一個較難解決的問題就是各家Browser百家爭鳴,其主要就是分為$M及Mozila這二大陣營(當然也有其它的,筆者較少使用),在Dom的定義上及JavaScript元件的定義上難以統一,使用最常遇到的一件事就是,程式明明在IE跑起來是正常的,但當使用FireFox時,就會出現不Work的情況。遇這種情況還需多加上判斷Browser的程式碼去跑二種版,若再加上Ajax所提供出來的元作只支持單一Browser時,就只能考慮系統會是多數使用者的環境下去開發。難道沒有一種比較好的解決方案來讓開發可更一致性,找問題可更容易??
在java中提出一毎概念Write Once Run Anywhere,這個概其最主的意圖就是希望可以透過編寫單一種程式碼的情況下,可在不同的平台上去執行,而不需為了每種平台單獨的去寫各平台適用的程式碼。當java提出這種概念時,真是讓程式設計師大為感動,不再需要去考慮平台的問題。
目前我們可以看到在一個聲光效果完整的WebApplication或網站上,一定是會有Flash的元素在上面的,flash確實是增加網站讓使用者更容易親近的感受。所對於網站要能成功,除了畫面上有了豐富的圖片及美觀的排版外,再加上了flah的的動畫,勢必能讓一個網站更吸引人。
我們都知道Ajax是在2005時開始發光,在這個Ajax名詞出現後,開始有了有量Ajax解決方案,大部份是需要寫JavaScript的,當然也有很多解決方案把JavaScript包在應用下面,讓使用可以不用去編寫JavaScript,但對於底層來說仍然是以JavaScript運作,這樣仍會遇到Browser不相容的問題發生。基於flash在網站上應用的成功,Marcomedia(現己被Adobe收購)找到了一個進入Ajax的機會點,於是發展了flex這個的一個framework,把flash做成一個個的單個元件,讓程式編寫者透過編寫WebApplication的概念來寫flash,並把flash變成可與使用者互動的元件。於是Flex就在這種情境下誕生,在flash player的運作下就可以達到java所提出的觀念WORA,程師設計師只要在編寫只在考慮flash的內在環境,即可只要照著Flex定義的方式去編寫自己想要的程式碼,即在各種不同的平台上執行(不論Browser或OS)。
依上方的說明各位應該就可以了解筆者一直提到flash,這裡不是要講的是Flex嗎??怎麼會提到flash呢??其實Flex Framework主要包含了二個主要的元素 A.ActionScript B.MXML。我們知道flash中有一個程式語言ActionScript,這個語言主要就是來控制flash上的圖形元件與使用者產生互動的一個程式語言。然而整個Flex Framework實際在底層運作的就是ActionScript,Flex Framework是open source的,當我們去看Flex安裝目錄時我們可以發現裡頭是有一堆帶 .as附檔名的檔案,所以可以了解到對Flex 而言最終所生成的執行內容就是flash檔案。那麼什麼又是MXML呢? 從字義上我們可以看到這個字是由M(Marcomedia) +XML這樣組合而成,所以MXML說穿了其實就是一份XML,所以我們在寫MXML時,就一定要符合XML的格式才行。
那麼對於要學習Flex會有又要造成程式設計師要花時間再多學一種語言呢?筆者認為學新的程式語言勢必是一定要花時間的,但學完這個程式語言對於後續要花的時間,及這個應用在未來十年二十年的變化大不不大又是另一個考量。必竟每一種技術在當時的時空環境下是有它的一定的優勢,又或每一種技術到了一定時間點時,會有面臨逃汰的情況(e.g.紅及一時的Applet,現應該較少網站上看的到用Applet寫出的程式,未來是不是有可能面臨洮汰?這個要讓時間來考驗著Applet),筆者認為flash這個技術在未來的十年或二十年在網站上應該是會伴演著變重要的角色(以增加網站的互動的立場而言)。以筆者學習Flex及應用的經驗,認為學習Flex只要建立在二個基礎上應該就可以很快的把Flex學起來,A.OO的程式基礎 B.HTML的基礎,方才提到ActionScript對應的就是A的部份,而MXML對應就是B的部份,如果有了這二個基本的概念的程式設計師應該不難在一個禮拜就把Flex學習完成(Adobe也是提供一個線上學習,目前只有到第三天,後面的課程應該蠻快就會補上)。再來就是工具的學習使用,Flex是opensource,所以對於要使用這個工具來編寫,其實是只要使用文字編輯器(notepad,utraleditor,editplus etc.)都可以來編寫Flex程式,只不過若要這麼寫,肯定要花上非常多的時間在看API文件,所以Flex提供了FlexBuilder這個工具,這個工具在Marcomedia時是架構在DreamWeavae等平台上,到了Adobe時代己搬到eclipse平台,對於工具的學習來說,只要對於這平台有概念者,就可很快的使用FlexBuilder。
以上對Flex做個簡單初認識介紹,後續再開始來介紹Flex在開發的內容。筆者盡可所寫的內容不要和一般舫間所介紹的內容相同(大部份的介紹可能會從Flex的歷史介紹,介紹完就帶一個HelloWorld等)。但若若真內容相同或無法滿足你的需求,但然直接前往ADOBE官網會是最完整的內容。

沒有留言:

張貼留言