钛金属应用开发平台 - Alloy vs Classic

5

我即将开始一个新的Titanium项目。到目前为止,我所写的都是现在被称为"经典项目" (自Alloy之前我一直在写Titanium应用程序)。

我在想是否值得在我的新项目中切换到Alloy。我知道基本上,Alloy在编译成java项目或objective-c项目之前会先编译成"Classic" Titanium代码。我也知道那个"预编译"过程中的一个很大的优势就是,在alloy代码中标记仅适用于Android或iPhone的内容,而不包括其他内容在编译后的"classic"代码中。

我的主要问题是灵活性 - 就像 "Classic" 一样,我感觉我对代码和正在发生的事情有更多的控制权。

其次,我有一些控件(如开源滑动菜单)没有为Alloy编写 - 我如何能够将它们作为我的项目的一部分?

在发现(在TiConf 2014推出的)TI UX之后,我开始问自己是否要使用Alloy (https://github.com/jaraen/Ti.UX.Templates),它是为Alloy编写的。

还有其他几个问题:

  1. 我如何在Alloy中运行旧的UI代码?
  2. 我能否在"Classic"项目中运行为Alloy编写的控件?
  3. "Classic"项目也可以映射出不属于iOS/Android的代码吗?
  4. Alloy项目和经典项目之间是否有性能差异?其他灵活性问题呢?

谢谢

2个回答

2

1
我认为从经典版到钛合金的转变对我来说是正确的选择。我觉得经典版钛合金开发不够结构化,也没有提供足够的指导来构建我的应用程序。Alloy为您的代码提供了MVC结构,但是经典版并没有完全阻止您自己开发或使用具有MVC功能的社区库。在这方面,我想说相对于Alloy来说,使用经典版更加灵活,因为您可以选择如何完成您的结构,而不是适应钛合金的结构。话虽如此,我从未感到受到Alloy的限制。
在钛中的开发方式取决于您的个人偏好。使用Alloy还是经典版都没有绝对正确的答案。如果其中一种对您更有效,请使用它。我觉得Alloy分离显示和业务逻辑的结构化方法在开发应用程序时对我很有意义。
我并未发现 Alloy 比 classic 不灵活。由于您可以在 Alloy 项目中使用 classic 代码,因此在 Alloy 中您几乎可以做到与 classic 中相同的所有事情。当编写特定类型的应用程序时,我相信有一些边缘情况我没有遇到,其中一个可能比另一个更容易。也许 classic 不太灵活,因为我认为您无法在 classic 应用程序中使用 Alloy。我不认为编译器会知道如何构建它。
每当我评估是否要使用特定技术时,我都会制作一系列实验性的小程序,以确保我的应用程序需求具备所有功能。如果我觉得它不适合或难以达到这些要求,我就不使用该技术。例如,当我切换到 Alloy 时,我确保 Ti.Paint 库仍然可以工作。如果不能,我仍将使用 classic。
就像 classic 一样,Alloy 也有控件。已经有一个非常流畅的基于 Alloy 的滑动菜单模块。我使用的是 Ti.Paint 库,它存在于 Alloy 之前,并不是一个 Alloy 特定的模块。 http://gitt.io/ 是查找 Alloy 模块/小部件的不错起点。

index.xml

<Alloy>
    <Window id="win">
        <View id="content" />
    </Window>
</Alloy>

1)在您的index.js文件中,您可以使用传统编码方式来操作Alloy视图。

index.js

var myview = Ti.UI.createView({
  backgroundColor: 'green'
});
$.content.add(myview);

2) 我认为您无法在经典项目中使用合金代码。正如您之前提到的,这需要对代码进行翻译,而经典项目很可能会跳过此步骤。

3) 您是在问是否可以根据Android或IOS特定部分包含或删除代码?您可能可以在if(Ti.Platform.osname ==“android”)语句之间策略性地放置include / require语句,以便于包含或不包含想要的代码。如果代码是用于Android,则需要这一个,如果是用于IOS,则需要那一个。

4) 从未尝试过比较经典和基于合金的项目的性能。我认为,自从我转换后从未注意到困扰我的客户或我自己的问题,因此我从未考虑过这个问题。完全有可能合金自动生成的代码在某些情况下更慢。我从未注意到这一点。

我觉得使用合金获得的效率远远超过了作为直接关注的问题。此外,如果我觉得通过合金创建的特定控件不好,我可以使用经典代码并自己定义该控件,具有来自经典项目定义的所有控件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接