我为什么要使用Flex?

时间:2008-09-24 15:58:23

标签: javascript flex

在最近的一次对话中,我提到我使用JavaScript作为Web应用程序。该评论引发了一个回应:“你应该使用Flex。它会缩短你的开发时间,而JavaScript也很难调试和维护。你需要使用正确的工具来完成正确的工作。”现在,我对Flex不太了解,但我个人并不认为JavaScript太难调试或维护,特别是如果你使用框架。 JavaScript也是目前使用最多的语言之一,所以在这方面它似乎也是更好的选择。然而,他的回答激起了我的兴趣。对于可供第三方开发人员构建附加组件的可分发Web应用程序,Flex是否是一个不错的选择?使用它与JavaScript框架相比有哪些优势?有哪些缺点?

11 个答案:

答案 0 :(得分:14)

我最近开始开发Flex应用程序,我个人觉得它是一个令人耳目一新的网络框架。

你得到一个完全运行客户端的有状态应用程序。您不必担心使用JavaScript进行跨浏览器可移植性,并且您可以获得一些非常简洁的内容,例如效果,图形和丰富的用户界面组件。

Flex还可以轻松地与Web服务进行通信,并且通过ECMA进行XML解析非常强大而且简单。

我很高兴我做了转换。至于它有多受欢迎......我不太确定,但我相信开发人员基础正在快速扩张。

我能想到的唯一真正的缺点是闪存播放器要求,但我认为假设大多数浏览器支持闪存播放器是相当安全的;甚至支持Linux中的konquerer;更多的是一个silverlight运行时(我从未计划安装)

答案 1 :(得分:14)

以下是我的经验:您确实需要分别考虑两件事 - 开发和最终用户体验。 Flex在第一个领域闪耀:

  • ActionScript是Java和JavaScript的完美结合,因此您可以获得熟悉的语言并对OOP提供强大的支持
  • 调试比在JavaScript中实现的更容易
  • Flex框架是面向组件和事件驱动的,有助于创建丰富的用户界面(HTML并非真正创建以支持应用程序UI方案)

另一方面,与AJAX应用程序相比,运行Flex应用程序时最终用户体验更差。首先,您需要安装Flash Player,但这对于当今的大多数计算机来说可能不是问题。更大的问题在于可用性 - Flash Player处理所有UI交互(而不是浏览器),因此密码管理器不起作用,文本字段不记得以前的条目,Ctrl + T和中键单击不起作用,文本搜索没有工作等等。

我的建议是 - 如果你正在开发一个应用程序(丰富的用户界面,与网络的其他部分相对分离),那就选择Flex,因为它可以节省你的时间和金钱,并且会让你的通过在新版本之间提供更丰富的功能和更短的时间段,用户更快乐。另一方面,如果您的应用程序需要与Web紧密集成,并且您希望用户能够使用其浏览器的功能,请使用AJAX。

很好的例子是Google Docs vs Buzzword。 Buzzword功能更丰富(例如,文本可以从双方流过图像,这是你在DHTML中永远无法实现的)但Google仍然决定选择AJAX版本,因为他们是“网络公司”。以一种或另一种方式进行操作是没有对错的,只是不同而且考虑最终用户是谁很重要。

答案 2 :(得分:12)

在大多数情况下,我会推动您使用标准的Web开发技术。使用像jQuery / Prototype这样的优秀库来调试或维护Javascript不再是一个很大的挑战,可以解决一些浏览器的不一致问题以及像Firebug和MS脚本调试器这样的工具来帮助调试。

有些情况下,Flash是更好的选择,但仅限于您正在执行复杂动画的情况。而且,如果您愿意投入精力,大多数动画都可以在不使用闪光灯的情况下实现。一个couple examples ...

Flash内容不像其他内容那样可访问。
这不仅会影响闪光灯的人,还会影响搜索引擎蜘蛛。现在可能有一些黑客可以帮助解决这个问题,但我认为大多数Flash内容都不会被谷歌索引。

Flash破坏了网络用户界面。
例如:

  • 如果我点击链接上的鼠标滚轮, 该链接在后台打开 标签。在Flash应用程序中没有办法 模拟这种行为。
  • 如果我在浏览器中选择文字并且 右键单击我提供的选项 由包含东西的浏览器 比如“在Google上搜索此文字”。 在Flash应用程序中,这些选项是否定的 那里更长。
  • 如果我右键点击链接或 我得到一组不同的图片 a中没有的选项 flash app。这可能非常 对没有的用户感到沮丧 “闪存精明”。

答案 3 :(得分:1)

GWT允许您在大多数情况下执行与Flex相同的操作,并处理所有浏览器兼容性问题,并允许您使用自己喜欢的IDE在Java中进行编码/调试。

所有这些都无需学习新语言(或者为flex IDE支付Adobe $$$,您需要做任何真正的事情)。

Flex有一些比GWT开箱即用的更漂亮的UI小部件,但是你可以使用大量的第三方小部件(例如GWT-EXT-JS) - 或者,你可以使用现有的最喜欢的JS小部件和GWT

如果您没有:http://code.google.com/webtoolkit/

,请查看

答案 4 :(得分: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插件,所以在所有浏览器中都使用相同的渲染引擎。

希望清除一些东西。 :)

答案 5 :(得分:1)

Flex有很多额外的开销:

  • 新语言
  • 客户端必须安装了闪存(可能需要安装,可能无法安装)
  • 客户必须下载flex框架(几百千字节)
  • 搜索引擎未对Flex内容编制索引(与Google可能声称的相反)

Flex有一个主要优势: - 更好地构建丰富的接口(参见Picnik.com等)

例如,在Flex中,可以轻松创建自定义样式的对话框,包括阴影,内部发光,动画打开,无论您想要什么。

总之,如果您需要额外的丰富性,请使用Flex。

答案 6 :(得分:0)

除了此处已经提到的内容之外,另一个主要区别是JavaScript是动态类型的,而ActionScript是静态类型的。这种好坏取决于你的观点:)。

答案 7 :(得分:0)

如果您希望您的Web应用程序看起来不像是Web应用程序,那么Flex非常好。您还可以回避使HTML + JS看起来像真正的应用程序的所有混乱。对于本质上是一个网站的东西,Flex可能不是最好的选择,但是如果你真的想编写一个恰好可以通过浏览器访问的应用程序,它可以快速开发并提供非常好看的结果。

答案 8 :(得分:0)

您应该尝试使用Google Gears。创建应用程序,为其添加一些Gears,您可以大大提高应用程序的速度(和可靠性)。

http://gears.google.com/

基本上,Google齿轮可让您访问任何应用程序的两个有用的东西:离线数据存储和本机线程控制(允许更新/计算在后台运行,而不会减慢用户计算机的速度)。

非常好的是,只要使用JavaScript处理数据存储/检索和服务器端通信,就可以使用您喜欢的任何框架。

它还允许您缓存客户端所需的任何文件,当您希望在浏览器下载某些所需图像时避免浏览器中的“闪烁”外观时,这尤其有用。

答案 9 :(得分:0)

考虑Flex的几个原因:

  1. 与使用JS / DHTML可以做的任何事情相比,控件库的Flex更丰富。图表控件对于商业应用程序来说是杀手锏,而像DataGrid / AdvancedDataGrid这样的东西远远超过了你可以用HTML做的任何东西。

  2. Flex框架专为构建应用程序而设计。它抽象出Flash Player中的“基于框架”的概念,以便真正轻松构建应用程序。它具有精心设计的组件层次结构,可以轻松扩展任何标准控件。它还有一个非常直观的事件模型,用于处理用户输入,并使您可以轻松地将任何控件派发自定义事件,这些事件可以冒泡到父组件或通过中央事件调度程序进行路由。虽然可以使用JS / DHTML来实现这一点,但我认为它几乎不那么容易,而且肯定不是为它而设计的。

  3. 您可以使用Flex运行时将Flex应用程序快速部署到桌面。 AIR还为本地系统访问,嵌入式SQLite DB等提供了额外的API .Gears提供了类似的功能,但它确实需要浏览器。当然,AIR需要AIR运行时,但至少它的目的是构建桌面应用程序。

  4. 你可以建立一个非常丰富,非常性感的用户界面,可以打败你的用户。作为程序员,我们可能不关心用户体验,但我们的用户却关心。 Apple最近取得很大成功的部分原因是因为他们非常重视用户体验,用户/消费者正在注意这一点。

  5. 我认为最大的问题是如果你真的习惯使用Java或C#,那么ActionScript语言似乎有点限制。如果你将它与J​​avaScript进行比较,它可能会相差甚至更好。

    许多人会使用Flash Player(或AIR),因为它不是“基于标准的”。如果我们只愿意使用符合100%标准且没有插件的网站,我们今天就不会使用YouTube。或者几乎任何其他网站都做有趣的数据可视化,你不能用HTML / JS(或至少,没有一个理智的努力水平)。 Adobe在开放Flex框架,Blaze DS(用于后端Java开发),发布AMF规范以及启动Open Screen Alliance以将Flash Player推向移动设备方面取得了相当的进步。 Flash Player,Flex,Flex Builder和Blaze DS都有公共JIRA错误跟踪器。我想说Flash Player本身很有可能在未来2 - 3年内成为开源软件。我认为Adobe正在继续走向非常开放,对平台的“封闭”和“专有”的批评变得越来越不重要。我认为如果开发人员以开放的态度对待Flex / FP,他们会对它们如何融合在一起感到非常满意。

答案 10 :(得分:0)

这个比较表足以让我决定使用什么。我更喜欢javascript:)

http://askmeflash.com/article_m.php?p=article&id=11