我认为从经典版到钛合金的转变对我来说是正确的选择。我觉得经典版钛合金开发不够结构化,也没有提供足够的指导来构建我的应用程序。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) 从未尝试过比较经典和基于合金的项目的性能。我认为,自从我转换后从未注意到困扰我的客户或我自己的问题,因此我从未考虑过这个问题。完全有可能合金自动生成的代码在某些情况下更慢。我从未注意到这一点。
我觉得使用合金获得的效率远远超过了作为直接关注的问题。此外,如果我觉得通过合金创建的特定控件不好,我可以使用经典代码并自己定义该控件,具有来自经典项目定义的所有控件。