Ammy al posto dello Xaml?
L’altra notte, complice un po’ di insonnia e tensione, non riuscivo a dormire. Mi sono svegliato ed ho cominciato a sfogliare dal telefono la mia timeline di Twitter.
Fino a quando trovo questo:
Un certo Miguel da Icaza mi porta a conoscenza dell’esistenza di Ammy. Di cosa si tratta? Lo riassumo in qualche punto per chiarire le idee:
-
il sito di riferimento è il seguente: https://www.ammyui.com/
- è un linguaggio json-like da utilizzare al posto dello XAML per descrivere la UI
- è un package da scaricare via NuGet: solo 59Kb
- rispetto a XAML presenta dei vantaggi: è più compatto (ma va?), supporta nativamente la capacità di modificare a run-time la Window o la Page, implementa il concetto di mixin, l’Intellisense nei file .ammy in Visual Studio funziona a meraviglia
- ci sono anche svantaggi: essendo json, non è possibile in questo momento collassare/espandere porzioni di view, tecnica che io utilizzo molto per nascondere parti di Window o di Page che non mi interessano in quel momento. Al momento supporta solamente WPF e non UWP. Non ho ancora utilizzato Ammy in produzione (è uscito il 22/12/2016), quindi non ho esperienze dirette
Ad esempio, una porzione di XAML come questa:
1: <StackPanel>
2: <TextBlock Text="A story to tell" />
3: <TextBlock Text="{Binding Story}" Style="{StaticResource StoryStyle}" />
4: </StackPanel>
Diventa il seguente blocco Ammy:
1: StackPanel {
2: TextBlock { "A story to tell" }
3: TextBlock {
4: Text: bind Story
5: Style: resource "StoryStyle"
6: }
7: }
Più compatto, è vero, ma Ammy supporta delle feature davvero molto interessanti, come il poter definire una sorta di “funzione” (mixin) da richiamare dove serve per generare controlli più o meno complessi. Ammy è da provare senz’altro, tanto più che è possibile mischiare tranquillamente view implementate in XAML con altre in Ammy. Le view implementate in Ammy sono salvate in file con estensione .ammy, che all’atto della compilazione vengono tradotte e convertite in XAML. Il team di sviluppo afferma che qualsiasi cosa fattibile con XAML è fattibile anche con Ammy.
CharMapMe 1.2 supporta già adesso Ammy!
Ho subito adattato il mio CharMapMe affinchè possa generare Label, TextBlock e TextBox in linguaggio Ammy. La versione 1.2 è già online, pronta per essere installata via ClickOnce.
Ho scritto al team di sviluppo di Ammy, giusto per metterli al corrente del mio tool, mi hanno risposto entusiasti ed hanno capito il valore di CharMapMe.