Apps Híbridos com

Ionic Framework

Cícero Viana

Desenvolvedor web

@cicerohen

Estudante de análise de sistemas pela Estácio FIC.

Desenvolvedor web há 7 anos e atualmente entusiasta de MEAN, apps híbridos e Python.

DEV I/O FOR

Comunidade de desenvolvedores de Fortaleza

NUG-CE

Comunidade de usuários NodeJS do Ceará

Stack

NodeJS

O que é?

Plataforma construída em cima da Chrome's V8 JavaScript engine  com modelo de I/O não bloqueante e orientado a eventos.

Chrome V8 Engine

Engine(em C++) criada para aumentar a performance na execução do JavaScript.

Usada tanto no client side(Google Chrome) quanto no server side(NodeJS)

Usa o modelo JIT(Just In Time)

Não produz bytecodes ou qualquer outro código intermediário

I/O Bloqueante

Uma chamada de operação bloqueia o fluxo do sistema até que a mesma seja concluída.

Mais threads(sub-processos) podem ser criadas pra dar suporte a mais requisições

I/O Não Bloqueante

Uma chamada de operação não bloqueia o fluxo do sistema.

Quando a operação precisa acessar uma base de dados, por exemplo, ela faz a requisição, sem no entanto bloquear o fluxo. Quando os dados solicitados à base estiverem prontos, a operação os recebe para que sejam usados.

Gerenciador de pacotes NodeJS(NPM)

npm  install [modulo] --save

Interface de

linha de comando(CLI)

npm  uninstall [modulo] --save

Repositório online

package.json

/node_modules

Principais comandos

Bower

Gerenciador de dependências para frontend

bower  install [componente] --save

Interface de

linha de comando(CLI)

Repositório online

bower.json

/bower_components

Principais comandos

bower  uninstall [componente] --save

AngularJS

O que é?

Framework client-side MV*(whatever), feito em JavaScript e usado para criação de Single Page Applications(SPA)

2 Way Data Binding(MVVM)

Técnica que mantém a sincronia entre os dados. Alterações no model são propagadadas para a view. Alterações na view são propagadas para o model.

Angular $scope

Elo de ligação entre a view e o model

Diretivas

Diretivas são extensões da linguagem HTML que permitem a implementação de novos comportamentos de forma declarativa.

<tabs>

    <tab-item title="Aba 1">Conteúdo da Aba 1</tab-item>

    <tab-item title="Aba 2">Conteúdo da Aba 2</tab-item>

    <tab-item title="Aba 3">Conteúdo da Aba 3</tab-item>

</tabs>
<ul class="nav nav-tabs">
    <li>
         <a href="#">Aba 1</a>
    </li>
    <li>
         <a href="#">Aba 2</a>
    </li>
    <li>
         <a href="#">Aba 2</a>
    </li>
  </ul>

  <div class="tab-content">
        <div style="" class="tab-pane">
            <span class="ng-scope">Conteúdo Aba 1</span>
        </div>
        <div class="tab-pane">
            <span class="ng-scope">Conteúdo Aba 2</span>
        </div>
        <div class="tab-pane">
            <span class="ng-scope">Conteúdo Aba 3</span>
        </div>
  </div>

Aba 1

Aba 2

Aba 3

Conteúdo Aba 2

Single Page Applications(SPA)

Aplicações que carregam um único arquivo HTML e o atualiza dinâmicamente à medida que o usuário interage com a aplicação

index.html

page1-tpl.html

ponto de carregamento

page2-tpl.html

page3-tpl.html

{ page1-data }

{ page2-data }

{ page3-data }

Web

SASS

Pré-processador

O que é?

Pré-processdores são ferramentas que extendem a capacidade do CSS.

Variáveis

$site-bg: blue;

body {
    background-color: $site-bg;
}


//CSS Processado
body {
   background-color: blue;
}
@function my-calculation-function($some-number, $another-number){
  @return $some-number + $another-number
}

.my-module {
  padding: my-calculation-function(10px, 5px);
}

//CSS processado
.my-module {
    padding:15px;
}

Funções

E muito mais...

Apache Cordova

O que é?

Conjunto de APIs que dão acesso aos recursos nativos do dispositivo.

História

O Apache Cordova surgiu da doação do source code do Phonegap(projeto criado pela Nitobi Software) para a Apache Software Foundation, durante a compra da Nitobi pela Adobe. Após a doação o projeto foi renomeado para Apache Callback, e logo em seguida definitivamente nomeado como Apache Cordova.

Diferenças entre Cordova e Phonegap

Phonegap é um distribuição do Apache Cordova, com funcionalidades/plugins mantidos pela Adobe. O Phonegap é para o Cordova, o que o Ubuntu é para o Debian.

 

Scaffold

Estrutura básica de um projeto Cordova/Phonegap

/** Project Scaffold */

cordova-app/
    hooks/
    platforms/
        android/
    plugins/
    www/
    config.xml



/* hooks directory */
/*Ações "ganchos" que podem ser inseridas em certos 
pontos no processo de build do Cordova.
/*

/* platforms directory */
/* Diretório onde ficam as plataformas adicionadas ao projeto. 
   Ex: Android, WP8, iOS
*/

/* plugins directory */
/* Diretórios para plugins usados no seu projeto Cordova. 
   Ex: Plugin para oauth com Facebook.
*/

/* www directory */
/* Diretório onde ficam os source codes do projeto. 
No processo de build, os arquivos deste diretório são processados e 
inseridos dentro do diretório das plataformas escolhidas para o build.
*/

/* config.xml file */
/* Arquivo comum  que guardam informações sobre o projeto e especifica 
parâmetros que afetam a forma de trabalhar do aplicativo, 
como por exemplo, podemos especificar se o aplicativo responde a orientação de tela.
*/

Performance

Híbrido

Nativo

Mas podemos otimizar

SPA (Single Page Application)

Touch Events

CSS Transitions

CSS Sprites

IONIC

O que é?

"Canivete suiço" para desenvolvimento de aplicativos usando tecnologias web 

Ecossistema Ionic

SDK

Ionic Creator

Ionic Market

Ionic Play

Ionic View

Ionic Showcase

NgCordova

Ionic Learn

Ionicons

Obrigado.

Apps Híbridos com Ionic Framework

By Cicero Viana (cicerohen)

Apps Híbridos com Ionic Framework

  • 746