Aplicativo com NativeScript – Jogos do Cartola FC

Em maio desse ano, tive a oportunidade de ir ao evento TelerikNEXT, em Boston. Foram três dias de palestras sobre as ferramentas da Telerik e algumas novidades no mundo do ASP.NET, JavaScript e mobile.
Em uma dessas palestras eu conheci o NativeScript. NativeScript é uma ferramenta open source que permite desenvolver aplicativos nativos para iOS, Android e Windows. É a mesma ideia do Titanium e Xamarin, onde se escreve em uma linguagem que não as padrões (Objective-C, Swift ou Java) e o compilador gera o código nativo para outras plataformas.

Sempre que posso, tento estudar novas tecnologias para pelo menos ter uma base de como elas funcionam. Passado alguns meses do evento, resolvi ver o NativeScript.
A instalação é bem simples no MAC (não tentei instalar em outros sistemas operacionais), basta instar um pacote npm usando o seguinte comando:

Além disso, existe a dependência para rodar o iOS: o Xcode e o Command Line Tools para o Xcode. Feito isso você já tem o comando nativescript, ou o seu alias tns, para começar a brincar. Alguns comandos básicos:

Cria o projeto do aplicativo

Adiciona as plataformas

Executa o aplicativo no emulador

NativeScript estrutura básica

Essa é a estrutura gerada quando o primeiro comando é executado. Todo o código deve ficar dentro da pasta app, jogada ou organizadas por pastas. O ideal é ter pelo menos uma pasta para as views e dentro dela outras separando as “páginas” do aplicatovo.
O app.js é o arquivo responsável pelo start do aplicativo. É nele que é definido, por exemplo, qual é a página inicial.

A pasta tns_modules são os módulos que você pode chamar individualmente em suas views. Por exemplo, para fazer um request em um serviço, você inclui o módulo http para poder fazer as chamada.

A parte do JavaScritp é bem normal, sem nada de diferente, o que facilita bastante no desenvolvimento. O XML é só seguir algumas tags especiais, mas nada de diferente também.

Para quem conhece um pouco de KnockoutJS, AngularJS ou outros frameworks que trabalham com two way data binding, vão se sentir bem familiarizado, já que o NativeScript trabalha da mesma forma.

Para fazer alguns testes e colocar os estudos em prática, eu criei um projeto simples que consulta a API do CartolaFC. No projeto eu uso troca de páginas, listview com e sem detalhes, campos de formulário e requests. Não existe validação para serviços fora do ar, buscas erradas e hora do mercado.

O projeto está no meu GitHub.