5

Ich bin dabei ein neues Titanium Projekt zu starten. Was ich bisher geschrieben habe, ist, was jetzt als "Classic Project" angesehen wird (ich habe Titanium-Apps schon vor Alloy geschrieben).Appcelerator Titan - Legierung vs Classic

Ich fragte mich, ob es sich lohnte, für mein neues Projekt zu Alloy zu wechseln. Ich weiß, dass Alloy grundsätzlich zu "Classic" Titanium-Code kompiliert, bevor es zum Java-Projekt oder Ziel-C-Projekt kompiliert. Ich weiß auch von einem großen Vorteil in diesem "Pre-Compilation" -Prozess, der darin besteht, Legierungscode zu markieren, der nur für Android oder iPhone relevant ist und den anderen nicht in den kompilierten "Classic" -Code einbezieht.

Meine Hauptanliegen sind Flexibilität - wie bei "Classic" habe ich mehr Kontrolle über den Code und was passiert.

Zweite Sorge, ich habe Kontrollen (wie Open-Source-Schiebe-Menü), die nicht für die Legierung geschrieben sind - wie kann ich sie als Teil meines Projekts haben?

Ich fing an, mich selbst zu fragen, eher Alloy oder nicht nach dem Finden zu verwenden (eingeführt in TiConf 2014) TI UX (https://github.com/jaraen/Ti.UX.Templates), die für Alloy geschrieben wird.

paar andere Fragen:

  1. wie kann ich alte UI-Code haben innerhalb Alloy laufen?
  2. Kann ich Kontrollen für Alloy in einem "klassischen" Projekt geschrieben haben?
  3. Kann "Classic" auch Code programmieren, der nicht zu iOS/Android gehört?
  4. gibt es einen Leistungsunterschied zwischen Alloy-Projekten und Classic-Projekten? Was ist mit anderen Flexibilitätsproblemen?

Dank

Antwort

2

Nur falls jemand diese Frage sieht und muss eine Antwort:

ich auch diese Frage in der Appcelerator Q & A gebucht haben, wo ich hier ein paar Antworten bekommen: http://developer.appcelerator.com/question/177739/appcelerator-titanium---alloy-vs-classic

Die Antwort, die ich gegeben wurde, ist unvollständig, und mehr Informationen könnten in einer Frage gefunden werden, die hier gefragt wird: http://developer.appcelerator.com/question/177542/classic-vs-alloy

0

I Ich fand, dass der Wechsel zu Titanium Alloy von Classic für mich richtig war. Ich hatte das Gefühl, dass die klassische Titanium-Entwicklung nicht strukturiert genug war, und gab mir nicht genügend Anleitung für eine gute Strukturierung meiner App. Alloy stellt Ihrem Code eine MVC-Struktur zur Verfügung, die Sie jedoch nicht vollständig davon abhalten konnten, Ihre eigenen zu rollen oder eine der Community-Bibliotheken mit MVC-Funktionen zu verwenden. In dieser Hinsicht würde ich sagen, dass es flexibler ist, Classic über Alloy zu verwenden, weil Sie wählen können, wie Sie Ihre Struktur erreichen, anstatt in die Struktur von Titanium Alloy zu passen. Davon abgesehen habe ich mich nie durch Alloy eingeschränkt gefühlt.

Wie Sie in Titanium entwickeln, ist Ihre Präferenz. Es gibt keine richtige Antwort auf die Verwendung von Alloy oder die Verwendung von classic. Wenn es dir besser geht, benutze es. Ich denke, dass mir der strukturierte Ansatz zur Trennung von Anzeige und Geschäftslogik von Alloy eine Struktur bietet, die für mich bei der Entwicklung einer App sinnvoll ist.

Ich habe nicht gefunden, dass Legierung weniger flexibel als klassisch ist. Da Sie klassischen Code in Ihrem Alloy-Projekt verwenden können, können Sie fast alles in Alloy, das Sie in klassischen tun können.Ich bin mir sicher, dass es einige Randfälle sind, auf die ich noch nicht gestoßen bin, wo man vielleicht einfacher ist als andere, wenn man einen bestimmten Anwendungstyp programmiert. Es mag sein, dass der Klassiker weniger flexibel ist, weil ich nicht glaube, dass Sie Alloy in Ihrer klassischen App verwenden können. Ich glaube nicht, dass der Compiler wissen würde, wie man das baut.

Immer, wenn ich einschätze, ob ich eine bestimmte Technologie verwenden werde, mache ich eine Reihe von experimentellen Miniprogrammen, um sicherzustellen, dass alle Fähigkeiten für die Anforderungen meiner Anwendung vorhanden sind. Wenn ich das Gefühl habe, dass es nicht passt oder es zu schwierig ist, diese Anforderungen zu erfüllen, verwende ich diese Technologie nicht. Zum Beispiel, als ich zu Alloy wechselte, stellte ich sicher, dass die Ti.Paint-Bibliothek immer noch funktionierte. Wenn nicht, würde ich immer noch klassisch verwenden.

Genau wie klassisch gibt es Steuerungen für Alloy. Es gibt bereits ein elegantes Alloy-basiertes Schiebe-Menü-Modul. Ich verwende die Ti.Paint-Bibliothek, die vor Alloy existierte und kein Alloy-spezifisches Modul ist.

http://gitt.io/ ist ein guter Ausgangspunkt für die Suche nach Alloy-Modulen/Widgets.

index.xml

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

1) In Ihrer index.js Datei würden Sie die folgenden Funktionen zu verwenden klassische Codierung haben eine Legierung Ansicht zu manipulieren.

index.js

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

2) Ich glaube nicht, Sie Alloy-Code in Ihrem klassischen Projekt verwenden können. Wie Sie bereits erwähnt haben, muss der Code übersetzt werden und ein klassisches Projekt würde diesen Schritt wahrscheinlich überspringen.

3) Fragen Sie, ob Sie Teile des Codes basierend auf Android oder IOS-spezifisch hinzufügen oder entfernen können? Sie könnten dies wahrscheinlich mit include/require-Anweisungen tun, die strategisch zwischen if (Ti.Platform.osname == "android") -Anweisungen platziert werden, um den gewünschten Code zu erhalten. Wenn der Code für Android ist, benötigen Sie dieses, wenn es für IOS ist, in diesem.

4) Es wurde nie versucht, die Leistung zwischen klassischen und auf Legierungen basierenden Projekten zu überprüfen. Ich denke, seit ich gewechselt habe und nie ein Thema bemerkt habe, das mich oder meine Kunden stört, habe ich nie viel darüber nachgedacht. Es ist durchaus möglich, dass Alloy automatisch Code generiert, der in einigen Fällen langsamer ist. Ich habe es nie bemerkt.

Ich glaube, dass die Effizienz, die ich bei der Verwendung von Alloy erhalte, bei weitem überwiegt. Außerdem, wenn ich das Gefühl hatte, dass mir die Art und Weise, wie ein bestimmtes Steuerelement durch Alloy erstellt wurde, nicht gefiel, konnte ich den klassischen Code verwenden und definieren, dass ich selbst die Kontrolle über eine Definition aus einem klassischen Projekt habe.