Fabulous traz todo o poder do F# para o ecossistema Xamarin. F# é a linguagem funcional da Microsoft muito poderosa com foco em código seguro e expressivo. O Fabulous utiliza dessas vantagens da linguagem para implementar o modelo arquitetural Elmish (model-view-update). Basicamente um Redux para Xamarin. Isso na pratica significa ter um controle de estado de aplicação centralizado e previsível.
6. • Programação OO
• Models complexas e mutaveis
• UI estatica e declarativa
• View em uma 2 linguagem
• Complexas ferramentas de
design
MVVM(model-view-viewmodel)
MVU(model-view-update)
• Programação funcional
• Modelos simples e declarativos
• UI declarative e dinamica
• View na mesma linguagem DSL
• Ferramentas simples de live
coding
15. Por que?
A Model é imutável,
o update é sempre
chamado de forma
síncrona, sem
problemas com
threads
Sua model se torna
a fonte única do
estado da sua
aplicação – Nunca
mais controlar
estado em múltiplas
camadas
Tendo uma UI virtual
por baixo dos panos
permite que você
consiga realizar
testes unitários em
tudo – Model, View,
Update
Funções de View
podem rodar fora da
thread de UI se
necessário
16. Por que?
A Model é imutável,
o update é sempre
chamado de forma
síncrona, sem
problemas com
threads
Sua model se torna
a fonte única do
estado da sua
aplicação – Nunca
mais controlar
estado em múltiplas
camadas
Tendo uma UI virtual
por baixo dos panos
permite que você
consiga realizar
testes unitários em
tudo – Model, View,
Update
Funções de View
podem rodar fora da
thread de UI se
necessário
17. Por que?
A Model é imutável,
o update é sempre
chamado de forma
síncrona, sem
problemas com
threads
Sua model se torna
a fonte única do
estado da sua
aplicação – Nunca
mais controlar
estado em múltiplas
camadas
Tendo uma UI virtual
por baixo dos panos
permite que você
consiga realizar
testes unitários em
tudo – Model, View,
Update
Funções de View
podem rodar fora da
thread de UI se
necessário
18. Por que?
A Model é imutável,
o update é sempre
chamado de forma
síncrona, sem
problemas com
threads
Sua model se torna
a fonte única do
estado da sua
aplicação – Nunca
mais controlar
estado em múltiplas
camadas
Tendo uma UI virtual
por baixo dos panos
permite que você
consiga realizar
testes unitários em
tudo – Model, View,
Update
Funções de View
podem rodar fora da
thread de UI se
necessário
23. Sobre
• Desenvolvido pela Microsoft Research
– Incluído junto com Visual Studio in 2010
• Open source
– GitHub
24. Sobre
• Desenvolvido pela Microsoft Research
– Incluído junto com Visual Studio in 2010
• Open source
– GitHub
• Cross platform
– Funciona com VS Code (e outros)
25. Sobre
• Desenvolvido pela Microsoft Research
– Incluído junto com Visual Studio in 2010
• Open source
– GitHub
• Cross platform
– Funciona com VS Code (e outros)
• Comunidade ativa
– fsharp.org
– F# Slack channel
27. Sobre
• Roda em cima do CLR
• Interopera com outras linguagens .NET
28. Sobre
• Roda em cima do CLR
• Interopera com outras linguagens .NET
• É turing completa
29. Sobre
• Roda em cima do CLR
• Interopera com outras linguagens .NET
• É turing completa
• É possível usufruir de qualquer bibliotecas escritas em/para
C# tal como EntityFramework, ASP.NET, Xamarin, etc.
67. • Exemplo de alguns requisitos:
• Aceitamos três formas de pagamento: Dinheiro,
cheque ou cartão.
68. • Exemplo de alguns requisitos:
• Aceitamos três formas de pagamento: Dinheiro,
cheque ou cartão.
• Para dinheiro, não precisamos de nenhuma
informação extra
69. • Exemplo de alguns requisitos:
• Aceitamos três formas de pagamento: Dinheiro,
cheque ou cartão.
• Para dinheiro, não precisamos de nenhuma
informação extra
• Para cheques, precisamos do número do cheque
70. • Exemplo de alguns requisitos:
• Aceitamos três formas de pagamento: Dinheiro,
cheque ou cartão.
• Para dinheiro, não precisamos de nenhuma
informação extra
• Para cheques, precisamos do número do cheque
• Para cartões, precisamos do tipo de cartão e do
número do cartão
82. Model, Messages e
updates são
definidos no F#
Views são definidas
com XAML e data
bindings
A model de retorno
da função de
update atualiza os
bindings
A função de Vew
retorna a page
com os bindings
85. Model, Messages e
updates são
definidos no F#
Views são definidas
com no F# utilizando
virtual UI
A model de retorno
da função de
update atualiza a
UI virtual
A função Vew
retorna uma UI
virtual e o
framework Elmish
procura pelas
diferenças e
atualiza a UI