Master
App
Turbolinks 5
Eu não posso acreditar que não é nativo!
Quem somos?
Menos
é Mais
Por que?
https://soundcloud.com/movimento-ux/sergiosalvador
"Artista é alguém que projeta algo
e que não resolve um problema
real."
https://hackernoon.com/how-it-feels-to-learn-javascript-in-2016-d3a717dd577f
https://www.youtube.com/watch?v=SWEts0rlezA
Como voltar para
era de ouro?
Turbolinks 5!
O que é?
Onde vive? O que come?
Otimiza a navegação
automaticamente.
Não há necessidade de anotar os links ou especificar
quais partes da página devem ser alteradas.
Nenhuma cooperação
necessária no lado do
servidor.
Responde com páginas HTML completas, nada de
fragmentos de página ou JSON.
<body>
<head>
Uma página:
<body>
<head>
<body>
Replace
no
<body>
<head>
Merge
do
<head>
O que o Turbolinks faz:
<body>
<head>
Respeita a Web.
Os botões Voltar e Recarregar funcionam exatamente
como você espera. Search engine-friendly by design.
Suporta mobile apps.
Os containers iOS e Android permitem que você crie
aplicativos híbridos usando recursos e controles de
navegação nativos.
Instalação/Uso
Rails
rails new ProjectName --skip-turbolinks
rails new ProjectName --skip-turbolinks
Site estático
Overview do Projeto
Executando o servidor de
arquivos estáticos
Request - Response
Instalando e Habilitando o
Turbolinks
Cache automático
Navegando
programaticamente
Desabilitando o
Turbolinks
Atenção!
Mudança de paradigma
Se lembra do cache?
Quer mais?
Nosso case
Master App
Menos
é Mais
Rails Tips
Variants: Use e abuse!
redirect_to(…, turbolinks: :advance)
redirect_to(…, turbolinks: :advance)
redirect_to(…, turbolinks: :advance)
turbolinks-ios: O que?
Da documentação:
“Build high-fidelity hybrid apps with native
navigation and a single shared web view”
turbolinks-ios: Como?
App Session Visitable
visit
● Cria, gerencia única instância
de WebView
● Avisa
○ link taps
○ network errors.
● Contém:
○ WebView container
○ Pull to refresh
○ Loading
turbolinks-ios: Como?
App Session Visitable
visit
1. Usuário da um tap em um link
2. turbolinks-ios intercepta click no link e notifica App através do Session
3. App decide o que fazer
a. Visit na próxima tela (push, present, dismiss, pop)
b. Mostar tela nativa
c. ...
Outras comunidades
Elixir / Phoenix Framework
Elixir / Phoenix Framework
Laravel, Vue.js
Gitlab
Conclusão
Operação enxuta
Incremente as partes nativas apenas em funcionalidades
que se provam necessárias!
Proporção 90% Responsivo e 10% Nativo (Menus,
navegação).
Monolith First.
Rollout (quase) realtime.
Mesmo tendo partes nativas, a aprovação na Apple Store tende a ser mais
rápida.
Facilita uso de teste A/B.
Operação enxuta
SEO Friendly:
Não tem o problema de Server Rendering (comum em
SPAs).
Estratégia do Desktop é refletida no msite.
Analytics Friendly tagueamento pode ser reutilizado entre
diferentes plataformas.
Operação enxuta
Progressive
Web Apps.
Turbolinks 5
Não existe bala de prata!
Server (Monolith First)
Excesso de responsabilidades.
O mesmo bug poderá afetar todas as plataformas.
Se mal feito, aumentará o custo de manutenção e infra.
UX:
Não terá exatamente o mesmo look and feel de um App 100% nativo.
Não terá a mesma performance de um App 100% nativo.
Bill Gross: A maior razão pela qual
startups obtêm sucesso | TED Talk
https://www.ted.com/talks/bill_gross_the_single_biggest_reason_why_startups_succeed?language=pt-br
Menos
é Mais
https://github.com/themasterapp
"Se quer ir rápido, vá sozinho.
Se quer ir longe, vá em grupo."
-- Provérbio africano
Obrigado!
themasterapp.xyz
rodrigo@ysimplicity.comguilherme.hashioka@gmail.com fabiothiroki@gmail.com
github.com/themasterapp

Master App - Porque menos é mais!

Notas do Editor

  • #13 Era de ouro.
  • #21 Web: Desktop + mobile iOS: iPhone + iPad + Android Wear Android: Smartphone + Tablet Desktop: Mac & Windows
  • #22 iOS: 4,5 Estrelas - 386 Avaliações (US) Android: 4,4 Estrelas - 1224 Avaliações - Mais de 100k downloads
  • #25 É uma lib Javascript!
  • #26 Uma vez que o Turbolinks foi carregado, ele irá sobrescrever o comportamento padrão de todos os links.
  • #27 Uma vez que o Turbolinks foi carregado, ele irá sobrescrever o comportamento padrão de todos os links.
  • #30 O modo "SPA" só ocorre após o primeiro carregamento, a fonte de verdade sempre será o servidor.
  • #31 O modo "SPA" só ocorre após o primeiro carregamento, a fonte de verdade sempre será o servidor.
  • #32 Eventos propagados no JS são interceptados pelo container. A web pode enviar dados via JS para os containers.
  • #41 Overview do source
  • #47 Configuração do Turbolinks 5 via tag script.
  • #49 Cache automático HTTP
  • #52 Quando você quiser sair do site. Ex: Garantir o comportamento do menu hambúrguer do Twitter Bootstrap.
  • #59 Turbolinks is fast because it doesn’t reload the page when you follow a link. Instead, your application becomes a persistent, long-running process in the browser. This requires you to rethink the way you structure your JavaScript. In particular, you can no longer depend on a full page load to reset your environment every time you navigate. The JavaScript window and document objects retain their state across page changes, and any other objects you leave in memory will stay in memory. With awareness and a little extra care, you can design your application to gracefully handle this constraint without tightly coupling it to Turbolinks.
  • #85 Um ponto positivo é que ele torna possível a obtenção de um Approach mais incremental. Os apps começam com Turbolinks e podem ir "nativatizando" conforme a necessidade de negócio. Do lado do App o custo é baixo mesmo. Para as telas que não são nativas, basta configurar a navbar, a navegação de advance e replace é feito automaticamente. E fica semi-nativo. Em poucas palavras é "good enough" a um custo baixo, mas escalável! Guilherme Hashioka - guilherme.hashioka@gmail.com Desenvolvedor iOS/Android.
  • #96 Mostrar URL do projeto Dizer que irá para as lojas E mostrar no site onde ir para a organização do Github. PWA Bots