2008-09-24 71 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,那么他们会对它们如何融合在一起印象深刻。