在flex应用程序中使用mxml而不是actionscript有什么好处?

时间:2010-10-31 11:48:14

标签: flex actionscript-3 mxml

他们似乎都用不同的语法完成相同的事情,这就是使用两种不同技术的关键。请强调使用mxml的所有可能的好处。还有一种情况,一种比另一种更有益,为什么。

请详细说明mxml与AS3的运行时行为,如 Oreilly Flex 4 Cookbook 第1页中所述:

“Flex的许多新手都想知道MXML和ActionScript是如何相互关联的。 MXML编译器(mxmlc)在解析了不同的习语之后进行翻译 将它们放入相同的对象中,以便:

<s:Button id="btn" label="My Button" height="100"/>

和此:

var btn:Button = new Button();
btn.label = "My Button";
btn.height = 100;

生成相同的对象。主要区别在于,在创建该对象时 ActionScript(第二个示例)创建按钮而不创建其他任何内容 MXML中的对象将按钮添加到包含MXML代码的任何组件中。 Flex Framework处理调用MXML中描述的对象的构造函数 并将其添加到父级或将其设置为父级的属性。 “

7 个答案:

答案 0 :(得分:8)

通常,

  • MXML用于构建用户界面
  • ActionScript用于编写应用程序的逻辑

当然,您也可以使用ActionScript构建用户界面,但是:

  • 这将花费你更多的时间
  • MXML视图比AS视图更容易阅读

就用户界面而言,ActionScript应仅用于在运行时管理视图元素(添加,删除...)。

答案 1 :(得分:2)

修改

在Flex应用程序中,如果两种用途都可用,则应该支持在AS上使用mxml。如果mxml不提供解决方案,则用户可以回退到AS3。 Flex是一个框架,因此您可以期望将重点放在mxml而不是AS3上。像大多数框架一样,我们的想法是隐藏细节以便于设计,并且可以使编程更易于访问。

一切都是有代价的,你不能指望mxml比AS3更快,因为它建立在它之上。一个合乎逻辑的结论是根据案例来决定。您的应用程序要求是什么,使用此组件是否真的有性能提升等...除了Flex作为一个整体必然比AS3慢,我认为您不能设置一般规则。有人可以补充说,如果一个人担心性能,为什么首先选择Flex ......

编辑结束

Flex框架主要用于构建RIA,因此它附带了一系列组件,mxml主要处理这些组件的布局,Actionscript是构建Flex框架的语言,通常会被使用为了你的应用程序的逻辑。

问题不是为什么选择一个而不是另一个。如果您决定直接使用语言或使用基于此语言的框架进行开发,则采用相同的方法。这就像比较JQuery和amp; Javascript或CodeIgniter&amp; PHP。我不是故意暗示使用JQuery的原因与使用Flex相同。虽然JQuery将试图隐藏浏览器的特性并使JS更易于访问,但Flex的目的却完全不同。

如果你正在开发RIA,那么Flex是有道理的,如果你正在开发游戏,那不是真的。您可以使用AS3完成Flex所能做的一切,只有您不想花时间开发DataGrids或HBox,而您可以花更多时间在您的应用程序结构上。设计。

另一方面,如果您正在开发网站或游戏,您可能不希望将Flex框架的重量添加到您的swf,只是因为您添加了一些Image组件和几个标签

Flex并不适用于所有情况,与我以前的Javascript或Php示例不同,Flex的目的不是使其基于更容易处理或更容易处理的语言。 Flex有一个非常具体的目标。

答案 2 :(得分:2)

类似的问题可能是“在UI上使用HTML而不是Javascript的优势是什么?”

我想你真的在问“使用声明式UI而不是强制性UI有什么好处?”

声明性UI更像是配置 - 没有逻辑(或者在MXML的情况下,非常少的逻辑)。声明性UI将视图的规范与行为和数据分开。

工具几乎总是更喜欢声明性的UI,因为声明性规范往往非常适合于序列化......工具更容易更新MXML而不是具有属性等的ActionScript。

随着您越来越熟悉这个概念,声明式UI开始感觉更自然,大多数人倾向于更喜欢它们。

答案 3 :(得分:0)

生产力,使用MXML创建视图元素比使用AS3更快。

答案 4 :(得分:0)

表面MXML get转换为相同的AS3字节码,就像你在普通AS3中编写一样,因此MXML使应用程序变慢的问题归结为Flex编译器进行转换的程度。

至于最初的问题,我会说MXML是用于视觉开发,但是在尝试创建自定义组件之前达到极限之前就已经说过了。 我个人在99.9%普通AS3中编写Flex应用程序,因为我无法忍受MXML。唯一的MXML文件是必需的Entry类,因此编译器知道它应该是它编译的Flex应用程序。

答案 5 :(得分:0)

您的应用程序将转换为ActionScript对象。

使用MXML的优势在于用户友好,并且可以更好地控制应用程序的外观。有时,使用MXML可以很容易地解决在右窗格或面板上组件的问题。

我看到使用actionScript的优势是对应用程序的命令,你有更多的控制权。有时候你的MXML并没有让你了解你所看到的东西,而且actionScript为你提供了更多的力量。

我建议你同时使用它们来构建一个可以减少头痛和更好结果的应用程序。

答案 6 :(得分:-4)

没有,Flex是为了学习,因为你了解更多你使用更多.as然后有一天...你使用0 Flex。 一个人很慢。

(编辑 - 回答评论)  '为什么弹性变慢' - 它创建了计算机生成的.as代码。 .as中的等效功能更快,更小。 'MXML将UI与代码分开' - 我会说不,它不是。首先......它是XML。

如果您是新手,请查看其他框架,例如Away3d,FDT和MinimalComponents。随着你越来越高级,你使用更少的MXML,有一天没有MXML,你正在编写纯.as。 Flex中的任何内容都可以在HTML5 / .js中完成。另外.as比HTML5 / .j要好得多 它就像一个学习三轮车,对于那些拖放的企业开发人员来说是好事,他们认为自己是程序员。软件工程师......在不断发展之前,不要长期使用Flex。 在这里:http://www.youtube.com/watch?v=TL2t8eOs1XE 如果你留在Flex并且没有前进,我会为你感到难过。