como desenvolver com um sistema com um front-end colossal?

68
https://cdn3.iconfinder.com/data/icons/picons- social/57/03-twitter-256.png Como desenvolver com um sistema com um front-end colossal? Mozart Diniz @mozartdiniz [email protected]

Upload: mozart-diniz

Post on 20-Jul-2015

196 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Como desenvolver com um sistema com um front-end colossal?

https://cdn3.iconfinder.com/data/icons/picons-

social/57/03-twitter-256.png

Como desenvolver com um

sistema com um front-end

colossal?

Mozart Diniz

@[email protected]

Page 2: Como desenvolver com um sistema com um front-end colossal?

O que é um sistema

com um front-end

colossal?

Page 3: Como desenvolver com um sistema com um front-end colossal?

Estamos falando de algo

entorno de:

68.202 Linhas de código

544 Arquivos JavaScript

4MB De arquivos minificados

Page 4: Como desenvolver com um sistema com um front-end colossal?

Como se chega a

isso?

Page 5: Como desenvolver com um sistema com um front-end colossal?

Dia 1

Page 6: Como desenvolver com um sistema com um front-end colossal?

• Interface amigável e sofisticada

(nada de sistema web parecido

com Desktop)

A definição do layout das telas

deve ser armazenada no banco

Muitos maps

Server como serviço REST

Page 7: Como desenvolver com um sistema com um front-end colossal?

https://cdn3.iconfinder.com/data/icons/musthave/256/Delete.png

Interface amigável e sofisticada(nada de sistema web parecido com

Desktop)

Page 8: Como desenvolver com um sistema com um front-end colossal?

A definição do layout das telas

deve ser armazenada no banco

https://cdn3.iconfinder.com/data/icons/musthave/256/Delete.pngServerfront

Trate de gerar seus

próprios HTMLs

Page 9: Como desenvolver com um sistema com um front-end colossal?

Bem, estamos em Janeiro de

2012, que framework eu deveria

escolher?

https://cdn3.iconfinder.com/data/icons/musthave/256/Delete.png

Backbone.js Angular.js knockout.js Ember.js

Page 10: Como desenvolver com um sistema com um front-end colossal?

Ok, teremos que montar nosso HTML com

JavaScript, as views do Backbone.js podem

nos ajudar com isso!

Page 11: Como desenvolver com um sistema com um front-end colossal?

Fornecia um sistema

de layout de grid para

o formulário e vários

componentes

bonitinhos ;)

Fornecia as abas, os

pickers, draggable,

sortable, tudo que

precisamos!

Page 12: Como desenvolver com um sistema com um front-end colossal?

• Desenvolveu-se o framework

Monet para gerar e administrar

toda a interface.

• Para as telas mais simples de

cadastro criou-se um arquivo de

crud com o model, o collection e

os views do backbone.

• Para as outras uma arquivo pra

cada função.

• Para cada widget visual ou

fragmento componente do

formulário uma template do

backbone

Page 13: Como desenvolver com um sistema com um front-end colossal?

• Para todos os outros problemas

JQUERY!

• Se precisarmos validar o formulário?

jQuery!

• Se precisarmos traduzir

os textos? Roda um jQuery nele ai!

• Eu preciso colocar umas coisas no

mapa. Que tal um jQuery?

Page 14: Como desenvolver com um sistema com um front-end colossal?

Nada pode dar errado!

Page 15: Como desenvolver com um sistema com um front-end colossal?

Dia 240

Page 16: Como desenvolver com um sistema com um front-end colossal?

45 Arquivos para as telas de crud.

+ 27 Collections do backbone.

+ 32 Models do backbone.

+ 48 Arquivos de view.

+ todas as libs que utilizamos!

Mais de 180 arquivos de JavaScript

Page 17: Como desenvolver com um sistema com um front-end colossal?
Page 18: Como desenvolver com um sistema com um front-end colossal?

Demora uma vida pra

carregar!

Page 19: Como desenvolver com um sistema com um front-end colossal?

Os templates se tornaram

uma praga!

193 templates diferentes

Page 20: Como desenvolver com um sistema com um front-end colossal?

templates

Page 21: Como desenvolver com um sistema com um front-end colossal?
Page 22: Como desenvolver com um sistema com um front-end colossal?

Memory Leaks

Page 23: Como desenvolver com um sistema com um front-end colossal?

Limite de CSS

Page 24: Como desenvolver com um sistema com um front-end colossal?

Impossível de testar o sistema tornou-se frágil!

Page 25: Como desenvolver com um sistema com um front-end colossal?

Dia 390

Page 26: Como desenvolver com um sistema com um front-end colossal?
Page 27: Como desenvolver com um sistema com um front-end colossal?

Módulos

Módulo

Page 28: Como desenvolver com um sistema com um front-end colossal?

Módulos

Page 29: Como desenvolver com um sistema com um front-end colossal?

Módulos

Page 30: Como desenvolver com um sistema com um front-end colossal?

Evite o DOM

Antes

// esse código tem caráter meramente ilustrativo ;)

Page 31: Como desenvolver com um sistema com um front-end colossal?

Evite o DOM

// esse código tem caráter meramente ilustrativo ;)

Agora

Page 32: Como desenvolver com um sistema com um front-end colossal?

Isso é tão legal

Que nós fizemos vários :D

Page 33: Como desenvolver com um sistema com um front-end colossal?
Page 34: Como desenvolver com um sistema com um front-end colossal?

Precisamos otimizar

as coisas por aqui.

Page 35: Como desenvolver com um sistema com um front-end colossal?

Mas antes, precisamos nos

separar do server!

ServerFront-end Monet.js

git submodulegit submodule

Java JS JS

Page 36: Como desenvolver com um sistema com um front-end colossal?

• Minifica

• Ofusca

• Karma

• Deploy

Page 37: Como desenvolver com um sistema com um front-end colossal?

E a qualidade?

Page 38: Como desenvolver com um sistema com um front-end colossal?
Page 39: Como desenvolver com um sistema com um front-end colossal?
Page 40: Como desenvolver com um sistema com um front-end colossal?

Ok, o código está lindo,

mas ele funciona?

Page 41: Como desenvolver com um sistema com um front-end colossal?
Page 42: Como desenvolver com um sistema com um front-end colossal?
Page 43: Como desenvolver com um sistema com um front-end colossal?

Teste unitário é ótimo,

mas não resolve tudo.

Page 44: Como desenvolver com um sistema com um front-end colossal?

Automatiza os

testes de aceitação

Page 45: Como desenvolver com um sistema com um front-end colossal?

Seus problemas acabaram!

#SQN

Page 46: Como desenvolver com um sistema com um front-end colossal?

A memória continua crescendo

indefinidamente!

Page 47: Como desenvolver com um sistema com um front-end colossal?

GC não limpa os nós que possuem

listeners.

Page 48: Como desenvolver com um sistema com um front-end colossal?

Performance importa!

Page 49: Como desenvolver com um sistema com um front-end colossal?
Page 50: Como desenvolver com um sistema com um front-end colossal?

[{coord}, {coord}, {coord}]

• Calcula o ângulo

• Pinta a seta

• Adicionar os listeners

• Adiciona ao mapa

Mais de 2 mil vezes

Page 51: Como desenvolver com um sistema com um front-end colossal?
Page 52: Como desenvolver com um sistema com um front-end colossal?

A culpa deve ser do jQuery

Trocar pelo FOR nativo!

28x mais rápido.

Page 53: Como desenvolver com um sistema com um front-end colossal?
Page 54: Como desenvolver com um sistema com um front-end colossal?

Corta o suporte ao

IE9 e faz com

web workers!

Worker()

• Calcula o ângulo

• Pinta a seta

• Adicionar os

listeners

Adiciona ao

mapa, um

a um.

Page 55: Como desenvolver com um sistema com um front-end colossal?
Page 56: Como desenvolver com um sistema com um front-end colossal?

DOM não é thread safe

Page 57: Como desenvolver com um sistema com um front-end colossal?

Reflows & Repaints a

cada coordenada

Page 58: Como desenvolver com um sistema com um front-end colossal?

Desenhe seu próprio SVG

e só no fim, adicione ao mapa.

Page 59: Como desenvolver com um sistema com um front-end colossal?
Page 60: Como desenvolver com um sistema com um front-end colossal?
Page 61: Como desenvolver com um sistema com um front-end colossal?

Mesmo minificado,

ofuscado e zipado o

sistema ainda demora

muito para carregar!

Page 62: Como desenvolver com um sistema com um front-end colossal?
Page 63: Como desenvolver com um sistema com um front-end colossal?

Requisições Ajax

Tiles de mapas

Arquivos de imagens

(layout)

50

36

40

Page 64: Como desenvolver com um sistema com um front-end colossal?
Page 65: Como desenvolver com um sistema com um front-end colossal?

Agora sim :D

Page 66: Como desenvolver com um sistema com um front-end colossal?

Dúvidas?

Page 67: Como desenvolver com um sistema com um front-end colossal?

Estamos contratando!

[email protected]

Page 68: Como desenvolver com um sistema com um front-end colossal?

Obrigado!

@mozartdiniz