2008-09-24 25 views
14

在最近的一次談話中,我提到我正在使用JavaScript作爲Web應用程序。該評論引發了一個迴應:「你應該使用Flex,它會縮短你的開發時間,並且JavaScript太難調試和維護,你需要使用正確的工具來完成正確的工作。」現在,我不太瞭解Flex,但我個人覺得JavaScript不太適合調試或維護,特別是如果您使用框架。 JavaScript也是目前使用最多的語言之一,因此它在這方面似乎也是更好的選擇。不過,他的回覆激起了我的興趣。對於第三方開發人員可以構建附加組件的分佈式Web應用程序,Flex會是一個不錯的選擇嗎?使用它與JavaScript框架相比有什麼優勢?有什麼缺點?我爲什麼要使用Flex?

+0

什麼樣的流行度是相關的?只要問一下優點和缺點。人氣,除了難以衡量外,完全無關緊要。我真的會改變問題的標題 – 2008-09-24 16:00:55

+0

感謝您的評論...我編輯了這個問題。 – VirtuosiMedia 2008-09-24 16:09:42

回答

12

在大多數情況下,我會推動您使用標準的Web開發技術。對於像jQuery/Prototype這樣的良好庫文件來說,Javascript不再是一個很大的挑戰,它可以消除一些瀏覽器的不一致性以及像Firebug和MS腳本調試器這樣的工具來幫助進行調試。

有些情況下,Flash是一個更好的選擇,但只有在你正在做複雜的動畫的情況下。而且,如果您願意投入大量精力,大多數動畫都可以在不使用閃光燈的情況下實現。 A couple of examples ...

Flash內容不像其他內容那麼容易訪問。
這不僅會影響閃光的人,還會影響搜索引擎蜘蛛。現在可能會有一些黑客幫助解決這個問題,但我認爲大多數Flash內容將永遠不會被谷歌索引。

Flash中斷Web UI。
例如:

  • 如果我點擊鏈接在後臺 標籤打開一個鏈接, 我的鼠標滾輪。在Flash應用程序中,沒有辦法模擬此行爲 。
  • 如果我在瀏覽器中選擇文本,並且在瀏覽器中使用 右鍵點擊,我會在瀏覽器中獲得 選項,其中包括 之類的內容,例如「爲此文本搜索Google」。 在一個Flash應用程序中,這些選項在那裏沒有 。
  • 如果我右鍵點擊一個鏈接或 圖像上,我得到一組不同的 選項並非在 Flash應用程序可用。這可能是非常令人沮喪的,對於不是 「Flash精明」的用戶來說是非常令人沮喪的。
14

我最近開始開發Flex應用程序,我個人發現它是一個令人耳目一新的Web框架。

你得到一個完全運行客戶端的狀態應用程序。您不必擔心使用JavaScript進行的跨瀏覽器可移植性,並且可以獲得一些非常整潔的內容,如效果,圖形和豐富的用戶界面組件。

Flex還可以輕鬆與Web服務進行通信,並且通過ECMA進行XML解析非常強大且簡單。

我很高興我已經開關了。至於其受歡迎程度如何......我並不確定,但我相當確定開發者基礎正在迅速擴大。

我能想到的唯一真正的缺點是閃存播放器的要求,但我認爲假設大多數瀏覽器支持Flash播放器是非常安全的;甚至在Linux中也支持konquerer;更重要的是,Silverlight運行時(我從不打算安裝)

+0

我想大多數用戶會得到與IE8或Windows更新silverlight - 自動相同的方式,如果你安裝Chrome,你會得到GoogleGears。 – 2008-09-24 17:35:20

+0

要做到這一點,在做富*應用程序時,Flex是一個很好的選擇,例如媒體大小或圖形大小(這就是它發光的地方),對於大部分基於文本的東西來說,這將是矯枉過正的。 但是再一次,Flash Player 10也有一些踢屁股文本佈局功能:) – 2008-09-24 21:13:17

+0

Flash在Linux上很好地工作,對BSD上的窮人沒有任何影響,因爲我們大多數人都不會打擾。 Javascript運行無處不在,包括移動。 – Rob 2010-10-02 02:17:20

1

GWT可以讓你在大部分時間內完成與Flex相同的內容,並處理所有瀏覽器兼容性問題,並且可以讓你在Java中進行代碼/調試你最喜歡的IDE。

所有這些都不需要學習新的語言(或者爲flex IDE支付Adobe $$$,那麼您就需要做任何事情)。

Flex有比GWT具有開箱即用一些漂亮的UI窗口小部件,但有一噸的第三方控件(如GWT-EXT-JS),可以使用的 - 或者,您可以使用您現有的收藏JS部件與GWT。

檢查出來,如果你還沒有:http://code.google.com/webtoolkit/

+0

我只使用開源的Flex SDK,並且可以讓「真正的應用程序」聽起來像你依賴於IDE ......而OP並沒有詢問GWT。 – mmattax 2008-09-24 16:15:09

1

我不能肯定這是我自己,還是別人誰提出這種說法,但我肯定會是一個說「使用正確的工具工作'。

Flex背後有一個很大的社區,並且被Adobe的平臺傳福音團隊大肆宣傳。現在,就替換JavaScript而言,這聽起來像是一個非常廣泛的討論點。 Flex是而非是JavaScript的替代品。它的功能,但它確實很好。也就是說,3D,繪圖和數據呈現無論是以圖表還是表格形式。 Flex還具有ActionScript 3的強大功能,它允許您在不觸及時間軸或關鍵幀的情況下執行Flash與MXML前端組件合作的大部分功能。

從某種意義上說,Flex是Flash和Rich Internet Application開發的.NET。它使用相同的數據源概念,以及使組件更爲輕鬆,並且可以快速開發的功能。

真正的問題是,您想要達到什麼目標?什麼是最終目標?

至於調試點,Flex在Flex Builder IDE中有一個真正的調試器和分析器。不幸的是,由於現代瀏覽器中JavaScript引擎的性質,JavaScript在瀏覽器之間的語法和執行有所不同。 Flex由於基本上是Flash,因此使用Flash插件,因此在所有瀏覽器中使用相同的呈現引擎。

希望清除一些東西。 :)

1

Flex有很多額外的開銷:

  • 新的語言
  • 客戶端必須安裝閃光燈(可能需要安裝,可能不能夠)
  • 客戶端必須下載Flex框架(幾百千字節)
  • Flex內容不被搜索引擎索引(相反的是谷歌可能要求)

Flex有一個主要優點: - 更好地構建豐富的接口(見Picnik.com等)

例如,在Flex中,很容易創建一個自定義樣式對話框,完成與陰影,內光暈,動畫開放,無論你想要什麼。

總之,如果您需要額外的豐富性,請使用Flex。

0

除了這裏已經提到的之外,另一個主要區別是JavaScript是動態類型的,而ActionScript是靜態類型的。這是好還是不好取決於你的觀點:)。

0

如果您希望您的Web應用程序看起來不是Web應用程序,那麼Flex非常好。您也可以避開所有使HTML + JS看起來像真正的應用程序的混亂。對於本質上是網站的東西,Flex可能不是最好的選擇,但是如果你真的想編寫一個恰好可以通過瀏覽器訪問的應用程序,那麼開發並提供非常好的結果是很快的。

14

以下是我的經驗:您真的需要分別考慮兩件事情 - 開發和最終用戶體驗。 Flex的照在第一區域:

  • ActionScript是Java和JavaScript的一個很好的混合液,使你得到一個熟悉的語言與大力支持OOP
  • 調試遠比你能在JavaScript
  • 實現更輕鬆Flex框架是面向組件的和事件驅動的,有助於創建豐富的用戶界面(HTML並非真正創建以支持應用程序UI場景)

另一方面,運行Flex應用程序與AJAX ap相比較頁。首先,您需要安裝Flash Player,但對於今天的大多數計算機來說,這可能不是問題。更大的問題是可用性 - Flash Player處理所有UI交互(而不是瀏覽器),所以密碼管理器無法工作,文本字段不記得先前的條目,Ctrl + T和中間單擊不起作用,文本搜索不工作等等等。

我的建議是 - 如果您正在開發應用程序(富UI,與網絡的其他部分相對分離),請使用Flex,因爲它可以節省您的時間,金錢並通過在新版本之間提供更豐富的功能和更短的時間段來讓用戶更開心。另一方面,如果您的應用程序需要與Web緊密集成,並且希望用戶能夠使用其瀏覽器的功能,請使用AJAX。

很好的例子是Google Docs vs Buzzword。 Buzzword功能更豐富(例如,文本可以在雙方中流動,這在DHTML中是永遠無法實現的),但Google仍然決定採用AJAX版本,因爲它們是「網絡公司」。做這種或那種方式沒有對錯之分,它只是不同而且考慮誰是最終用戶是很重要的。

0

您應該試試Google Gears。創建您的應用程序,添加一些Gears,並且可以大大提高應用程序的速度(和可靠性)。

http://gears.google.com/

本質上谷歌齒輪,您可以訪問兩個有用的東西的任何應用程序:離線數據存儲,以及本地線程控制(允許更新/計算在後臺運行,並沒有拖慢用戶電腦)。

真正好的是,只要用JavaScript處理數據存儲/檢索和服務器端通信,就可以使用任何適合您的應用程序的框架。

它還允許您緩存客戶端所需的任何文件,這對於當瀏覽器正在下載某些所需圖像時要避免瀏覽器中的「閃爍」外觀特別有用。

0

的幾個原因考慮軟硬度:

  1. 控制庫是在Flex中比任何你可以將JS/DHTML做的要豐富得多。製圖控件對於商業應用程序來說是殺手級的,DataGrid/AdvancedDataGrid之類的東西遠遠超過了你可以用HTML做的任何事情。

  2. Flex框架是爲構建應用程序而設計的。它抽象出Flash Player中的「基於框架」的概念,以便真正使構建應用程序變得容易。它具有精心設計的組件層次結構,可以輕鬆擴展任何標準控件。它還具有用於處理用戶輸入的非常直觀的事件模型,並且可以讓您的任何控件調度自定義事件,這些事件可能會觸發父組件或通過中心事件分派器進行路由。雖然可以用JS/DHTML來做到這一點,但我認爲它不是那麼容易,它當然不是爲它設計的。

  3. 您可以使用Flex應用程序並使用AIR運行時將其快速部署到桌面。 AIR還爲本地系統訪問,嵌入式SQLite數據庫等提供了額外的API。Gears提供了類似的東西,但它確實需要瀏覽器。當然,AIR需要AIR運行時,但至少它的目的是構建桌面應用程序。

  4. 你可以構建一個非常豐富,非常性感的用戶界面,將敲你的用戶襪子。作爲程序員,我們可能不關心用戶體驗,但我們的用戶可以。蘋果最近取得巨大成功的部分原因是因爲他們真正重視用戶體驗,用戶/消費者注意到了這一點。

我認爲最大的一個問題是,如果你真的習慣了Java或C#,ActionScript語言似乎有點限制。如果你將它與J​​avaScript進行比較,它的表現可能稍微好一些,或者稍微好一點。

很多人都會使用Flash Player(或AIR),因爲它不是「基於標準的」。如果我們只願意使用符合100%標準並且沒有插件的網站,我們今天就不會有YouTube。或者幾乎任何其他網站,做有趣的數據可視化,你不能用HTML/JS做(或者至少,不是一種理智的努力)。 Adobe在開放Flex框架,Blaze DS(用於後端Java開發),發佈AMF規範以及啓動開放屏幕聯盟以將Flash Player推送到移動設備方面相當進步。 Flash Player,Flex,Flex Builder和Blaze DS都有公共的JIRA bug跟蹤器。我想說的是,Flash Player本身在未來的2-3年內將成爲開源的絕佳機會。我認爲Adobe正在繼續朝着非常開放的方向發展,並且對平臺的「封閉」和「專有」的批評越來越不重要。我認爲,如果開發人員以開放的態度接觸Flex/FP,那麼他們會對它們如何融合在一起印象深刻。