为什么要使用Flex?

时间:2020-03-06 14:40:19  来源:igfitidea点击:

在最近的一次对话中,我提到我正在将JavaScript用于Web应用程序。该评论引起了回应:"我们应该改用Flex。它将缩短开发时间,并且JavaScript太难调试和维护。我们需要使用正确的工具来完成正确的工作。"现在,我对Flex不太了解,但是我个人并不觉得JavaScript很难调试或者维护,特别是在使用框架的情况下。 JavaScript也是目前使用最广泛的语言之一,因此在这方面似乎也是一个更好的选择。但是,他的答复激起了我的兴趣。对于第三方开发人员可以为其构建附件的可分发Web应用程序,Flex会是一个不错的选择吗?与JavaScript框架相比,使用它有什么优势?有哪些缺点?

解决方案

我最近开始开发Flex应用程序,而且我个人发现它是Web的令人耳目一新的框架。

我们将获得一个完全在客户端运行的有状态应用程序。我们无需担心使用JavaScript进行跨浏览器的可移植性,并且获得了一些非常简洁的东西,例如效果,图形和丰富的用户界面组件。

Flex还使与Web服务的通信变得容易,并且通过ECMA进行XML解析功能异常强大且简单。

我很高兴进行了切换。至于它的流行程度...我不确定,但我可以肯定开发人员群体正在迅速扩大。

我能想到的唯一真正的缺点是对Flash Player的要求,但是我想假设大多数浏览器都支持Flash Player是非常安全的。甚至支持Linux中的konquerer;再等等,那就是silverlight运行时(我从不打算安装)

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

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

与GWT相比,Flex拥有一些更漂亮的UI窗口小部件,但是我们可以使用大量的第三方窗口小部件(例如GWT-EXT-JS),也可以将现有的最喜欢的JS小部件与GWT一起使用。

如果还没有,请检查一下:http://code.google.com/webtoolkit/

我不确定是我本人,还是其他人发表了这一声明,但我绝对会说"使用正确的工具完成工作"。

Flex背后有一个庞大的社区,并被Adobe的平台宣教团队大肆宣传。现在,就替换JavaScript而言,这听起来像是一个非常广泛的讨论点。 Flex不能替代JavaScript。它所做的却很好。也就是说,无论是图表还是表格形式的3D,图形和数据渲染。 Flex还具有ActionScript 3的功能,它使我们可以与MXML前端组件一起完成Flash的大部分工作,而无需触及时间轴或者关键帧。

从某种意义上说,Flex是Flash和Rich Internet Application开发的.NET。它使用相同的数据源概念,以及以组件为中心的设计结构,从而可以轻松,快速地进行开发。

真正的问题是,我们要达到什么目标?最终目标是什么?

关于调试点,Flex在Flex Builder IDE中具有真正的调试器和分析器。不幸的是,由于现代浏览器中JavaScript引擎的特性,JavaScript在浏览器之间具有不同的语法和执行方式。由于本质上是Flash,因此Flex由于使用Flash插件而在所有浏览器中使用相同的呈现引擎。

希望能解决一些问题。 :)

Flex有很多额外的开销:

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

Flex具有一个主要优点:
更擅长构建丰富的界面(请参见Picnik.com等)

例如,在Flex中,可以轻松创建自定义样式的对话框,该对话框包含阴影,内部发光,动画打开等各种功能。

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

在大多数情况下,我都会将我们推向标准的Web开发技术。使用jQuery / Prototype等良好的库来调试或者维护Java库,以消除一些浏览器的不一致性以及Firebug和MS脚本调试器之类的工具来帮助调试,不再是一个很大的挑战。

在某些情况下,Flash是更好的选择,但仅在我们执行复杂动画的情况下。而且,如果我们愿意为此付出努力,则可以实现大多数动画而无需借助Flash。几个例子...

Flash内容不如其他内容可访问。
这不仅会影响没有闪光灯的人,还会影响搜索引擎蜘蛛。现在可能会有一些技巧可以帮助解决此问题,但是我认为大多数Flash内容永远不会被Google索引。

Flash破坏了Web UI。
例如:

  • 如果单击链接上的鼠标滚轮,该链接将在背景选项卡中打开。在Flash应用程序中,无法模拟此行为。
  • 如果在浏览器中选择文本,然后单击鼠标右键,我将获得浏览器提供的选项,其中包括"在Google中搜索此文本"之类的内容。在Flash应用程序中,这些选项不再存在。
  • 如果我右键单击链接或者图像,则会得到一组不同的选项,这些选项在Flash应用程序中不可用。对于不是"精通闪存"的用户,这可能会非常令人沮丧。

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

如果我们希望Web应用程序看起来像不是Web应用程序,那么Flex就是很好的选择。我们还可以避免使HTML + JS看起来像真正的应用程序的所有麻烦。对于本质上是网站的内容,Flex可能不是最佳选择,但是如果我们真的想编写一个恰巧可以通过浏览器访问的应用程序,则可以快速开发并获得不错的效果。

这是我的经验:我们确实需要分别考虑两点开发和最终用户体验。 Flex在第一个领域大放异彩:

  • ActionScript是Java和JavaScript的完美结合,因此我们会获得熟悉的语言以及对OOP的强大支持
  • 调试远比用JavaScript可以实现的容易
  • Flex框架是面向组件和事件驱动的,有助于创建丰富的用户界面(实际上并不是为了支持应用程序UI场景而创建HTML)

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

我的建议是,如果我们正在开发应用程序(功能丰富的UI,与Web的其余部分相对分离),请选择Flex,因为它可以节省时间,金钱,并通过提供更丰富的功能和更短的更新间隔使用户更加满意版本。另一方面,如果应用程序需要与Web紧密集成,并且我们希望用户能够使用其浏览器的功能,请使用AJAX。

很好的例子是Google Docs与Buzzword。 Buzzword的功能更加丰富(例如,文本可以从图像的两面流到两侧,这在DHTML中是永远无法实现的),但是Google仍然决定使用AJAX版本,因为它们是" Web公司"。一种或者另一种方式没有对与错,这只是不同而已,重要的是要考虑最终用户是谁。

我们应该改用Google Gears。创建应用程序,向其中添加一些Gears,我们可以大大提高应用程序的速度(和可靠性)。

http://gears.google.com/

本质上,Google Gears使我们可以访问任何应用程序两个有用的东西:脱机数据存储和本机线程控制(允许更新/计算在后台运行,并且不会减慢用户计算机的速度)。

真正的好处是,只要使用JavaScript处理数据存储/检索和服务器端通信,就可以为应用程序使用任何喜欢的框架。

它还允许我们缓存客户端所需的任何文件,这在我们要避免浏览器正在下载某些所需图像时避免浏览器中出现"闪烁"外观时特别有用。

考虑使用Flex的一些理由:

  • 在Flex中,控件库比使用JS / DHTML可以做的任何事情都丰富得多。图表控件是商务应用程序的杀手and,诸如DataGrid / AdvancedDataGrid之类的功能远远领先于HTML可以执行的任何操作。
  • Flex框架是为构建应用程序而设计的。它抽象了Flash Player中的"基于框架"的概念,从而使构建应用程序变得非常容易。它具有精心设计的组件层次结构,可轻松扩展任何标准控件。它还具有一个非常直观的事件模型,用于处理用户输入,使任何控件都可以轻松分发自定义事件,这些事件可以冒泡到父组件或者通过中央事件分配器进行路由。尽管使用JS / DHTML可以做到这一点,但我认为这几乎没有那么容易,而且它当然不是为此设计的。
  • 我们可以使用Flex应用程序,然后使用AIR运行时将其快速部署到桌面。 AIR还提供了用于本地系统访问,嵌入式SQLite DB等的其他API。Gears提供了类似的功能,但确实需要浏览器。当然,AIR需要AIR运行时,但至少它是用于构建桌面应用程序的。
  • 我们可以构建一个非常丰富,非常性感的用户界面,这将使用户脱颖而出。作为程序员,我们可能并不关心UX,但我们的用户会关心。苹果公司最近获得大量成功的部分原因是因为他们真正重视用户体验,并且用户/消费者都注意到了这一点。

我认为最大的缺点是,如果我们真的习惯Java或者C#,则ActionScript语言似乎有些局限。如果我们将其与JavaScript进行比较,它的性能可与之媲美甚至略胜一筹。

很多人会因为不是基于"标准"的Flash Player(或者AIR)而感到厌烦。如果我们只愿意使用100%符合标准且没有插件的网站,那么今天就不会有YouTube。或者几乎任何其他进行有趣的数据可视化的网站,我们都无法使用HTML / JS(或者至少没有同样的努力)。 Adobe在开放Flex框架Blaze DS(用于后端Java开发),发布AMF规范并成立开放屏幕联盟以将Flash Player推向移动设备方面取得了很大进步。 Flash Player,Flex,Flex Builder和Blaze DS都具有公共JIRA错误跟踪器。我想说,Flash Player本身很有可能在未来2-3年内成为开源软件。我认为Adobe正在继续朝着非常开放的方向发展,并且对"封闭"和"专有"平台的批评越来越不相关。我认为,如果开发人员以开放的态度来对待Flex / FP,那么它们的组合方式将给他们留下深刻的印象。

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

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