O lado sombrio

das

Single Page Applications

Olá!

@victor-am

@victoratmorning

Victor Marques

Estamos contratando!

bit.ly/trabalhe-na-ptec​

O lado sombrio

das

Single Page Applications

Primeiramente, eu não odeio JavaScript

Segundo, eu não odeio SPAs

Mas ver só o lado positivo faz com que tomemos decisões precipitadas...

As vezes para fazer decisões sensatas

precisamos mergulhar no...

Lado sombrio

Mas antes de tudo, o que não é uma SPA?

MPAs

Multi-page Applications

MPAs que você conhece

Então o que é uma SPA?

Uma SPA tem o

roteamento

feito pelo

front-end, e não pelo servidor

SPAs que você conhece

E quais são as vantagens de uma SPA?

Experiência mais

rápida e flúida

Controle

da UX durante as

transições de página

Separação do

front-end

e

back-end

Deployments do

front-end

mais simples

Mas nem tudo são flores... 🌸

O que ninguém te conta... 🤐

Ramp-up

Falta de conhecimento

da equipe

- NPM

- Webpack 

- Framework JS

- ES6

- Ferramental de testes

- Novas patterns

Etc...

Implantação da infraestrutura

para uma nova stack

Duas

aplicações

Full-stacks

vs

Especialistas

Dois repositórios*

significam 

dois PRs

diferentes para a mesma feature

Quebrando a internet 🤕

a.k.a. no free SEO for you

SEO é aquela coisinha que faz as pessoas te encontrarem na internet

Pre-rendering

vs

Server-side rendering

Jogando fora 🚮

anos

de features dos

web browsers

Nada de preservar dados não salvos 💾

dos formulários

 Nada de cancelar ❌

requests obsoletos quando o usuário muda de idéia

Salvar a

posição do scroll

da última página visitada?

Nope.

Maior controle da experiência

de loading significa

FAZER

a experiência de loading

Lidando com

APIs

Ok, mas uma API para vários clients parece uma boa idéia, certo?

Na prática muitas vezes cada client acaba com uma

versão própria

da API 😔

Deployments

casados

💍

Ah, mas eu vou versionar

minha API

Assim espero!

Mas isso significa mais trabalho para você 😔

Autenticação 🕵

Separando back e front você abre mão de alternativas

plug-and-play

(como o Devise por exemplo)

Você vai ter uma solução de autenticação no

back-end

E outra solução no

front-end

Mas quem vai ter que amarrar as duas é você!

Autorização 👮

(ou permissões)

Sua API precisa validar permissões...

Mas seu front também precisa!

COM permissões

SEM permissões

E aí, o que fazer?

Duplicar a lógica?

Deixar no back-end e fazer um request para buscar?

E quando sua lógica de permissão depender do estado de um recurso?

COM permissões

SEM permissões

Memory leaks*

O que são

memory leaks?

E por que eu deveria me preocupar?

Por isso:

Mas precisa ser

8 ou 80?

Vamos ver algumas alternativas...

Mas meu app se beneficiaria tanto de um framework JavaScript...

Frameworks JavaScript

❤️

sua aplicação

Ruby

O Webpacker do Rails 5.1 pode te ajudar

Mas e a UX e percepção de velocidade?

Já pensou em Turbolinks?

(polêmico! 🤐)

Mas e se eu também

quiser usar um

framework javascript?

Turbolinks

+

Frameworks Javascript

=

funciona!

Concluindo...

Fazer um SPA

pode até ser uma

boa idéia

Mas não é uma decisão trivial

Uma decisão tão central para a arquitetura precisa ser ponderada com cuidado

A maioria das perdas são mitigáveis

Mas para mitiga-las precisamos investir mais esforço

Agora fica a

reflexão...

Será que seu próximo projeto

precisa mesmo

ser uma SPA?

@victor-am

@victoratmorning

Obrigado!

O lado sombrio das Single Page Applications

By Victor Marques

O lado sombrio das Single Page Applications

  • 376