FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas

77
10 dicas de desempenho para apps mobile híbridas Loiane Groner http://loiane.com

description

FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas. Salvador - BA, 13 de setembro de 2014

Transcript of FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas

Page 1: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas

10 dicas de desempenho para apps mobile híbridas

Loiane Groner http://loiane.com

Page 2: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas

Me, Myself && I

!

•Gerente de Desenv Projetos

•8+ XP TI

•Java, Sencha, Phonegap

•http://loiane.com

•@loiane

Page 3: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas

packpub.com amazon.com.br

livrariacultura.com.br

Page 4: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas

Learning JavaScript Data Structures and Algorithms !Out/Nov 2014

Ext JS 5 Avançado !Fev 2015

Page 5: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas

http://upgrade.ins-us.com/

Nov 2013

Page 6: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas
Page 7: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas
Page 8: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas
Page 9: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas
Page 10: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas

I

Page 11: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas
Page 12: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas

#1

Page 13: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas

<div data-role="page" id="tracks">!! <div data-role="header"><h1>Tracks</h1></div>!! <ul data-role="listview">!! <li><a href="getTrackInfo.php?id=1">Desempenho e Escalabilidade na Prática</a></li>!! <li><a href="getTrackInfo.php?id=2">Java na Crista da Onda</a></li>!! <li><a href="getTrackInfo.php?id=3">Arquiteturas que Você Sempre Quis Conhecer</a></li>!! <li><a href="getTrackInfo.php?id=4">Mobile: Portáteis e Furiosos</a></li>!! </ul>!</div>!

Page 14: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas

NÃO gere páginas no servidor

Page 15: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas

Web Browser

Dispositivo

Web Server

Java/PHP/Ruby/C#

Arquivos Imagens/

Documentos

Banco de Dados

Backend

http://

Lógica de negócio

JavaScript

Arquivos Imagens/

Documentos

Banco de Dados caching

Page 16: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas

JSON

Page 17: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas

#2

Page 18: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas

// Obtém dados!$.ajax({url: "getTrackInfo.php?id=1"}).done(function(track) {! // Mostra os detalhes - view! $.mobile.changePage($('#track-info'));!});!

Page 19: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas

//mostra View!$.mobile.changePage($('#track-info'));!!//------------------------------------------------------------------------!!$(document).bind("pagechange", onPageChange);!!function onPageChange(event, data) {!! var toPageId = data.toPage.attr("id");!!! switch (toPageId) {! case 'track-info':! ! ! clearValues();!! ! // Obtém dados!! ! ! $.ajax({url: "getTrackInfo.php?id=1"}).done(function(track) {!! ! ! // Atualiza os detalhes - view!! ! ! $('#trackNome h1').html(track.name);!! ! ! ! $('#trackDesc').val(track.desc);!! ! ! ! $('#trackDia').val(track.dia);!! ! ! ! $('#trackLocal').val(track.local);!! ! ! ! $('#trackHost').val(track.host);!! ! ! });! ! ! ! break;! }!} !

Page 20: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas

Ext.define('MyContacts.store.Contacts', {! extend: 'Ext.data.Store',!! requires: [! 'MyContacts.model.Contact',! 'MyContacts.proxy.ContactsProxy'! ],!! config: {! autoLoad: true,! model: 'MyContacts.model.Contact',! storeId: 'Contacts',! proxy: {! type: 'contactstorage'! }! }!});!

Page 21: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas

control: {! "contactslist": {! show: 'onListItemPainted'! }!}!!//-------------------------------------!!onListItemPainted: function(view, options) { ! view.getStore().load();!}!

Page 22: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas

Show me the VIEW!

Page 23: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas

Mostre a view e depois carregue os

dados

Page 24: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas

#3

Page 25: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas

Ext.define('MyContacts.view.ContactsPanel', {! extend: 'Ext.Container',! alias: 'widget.contactspanel',!! requires: [! 'MyContacts.view.ContactsList',! 'MyContacts.view.ContactInfo',! 'MyContacts.view.ContactEdit'! ],!! config: {! layout: {! type: 'card'! },! items: [! {! xtype: 'contactslist'! },! {! xtype: 'contactinfo'! },! {! xtype: 'contactedit'! }! ]! }!!});!

Page 26: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas
Page 27: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas

#4

Page 28: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas

select count(*) from Participantes

== 1000

App com lista dos participantes do FrontInBahia

É muito dado?

Page 29: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas

Paging / Paginação

https://github.com/stakbit/jQuery-Mobile-Listview-Pagination-Plugin

http://dcarrith.github.io/jquery.mobile.lazyloader/

Page 30: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas

$.ajax({url: "listaEstadosBr.php"}).done(function(data) {! estadosBr = data;!});!

Page 31: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas

Dados Estáticos

LocalStorage SQLite - database Arquivo - JSON

Page 32: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas

// do a SERVER load, passing a callback function!offlineSyncStore.loadServer(function(){!! // create a new Person record! var person = Ext.create('Person', {! FirstName: 'Joe',! LastName: 'Bloggs',! Email: '[email protected]'! });!! // add it to the store! offlineSyncStore.add(person);!! // sync the store LOCALLY. If autoServerSync is set to true then this will also sync using SERVER proxy! offlineSyncStore.sync();!! // if autoServerSync is false then call SERVER sync manually! offlineSyncStore.syncServer();!!});!

https://market.sencha.com/extensions/ext-ux-offlinesyncstore

Page 33: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas

Faça cache dos dados

Page 34: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas

#5

Page 35: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas
Page 36: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas

var timeTouch;!!$("body").on("touchend", ".needsclick", function() {! timeTouch = new Date().getTime();!});!!$("body").on("click", ".needsclick", function() {! if (timeTouch) {! $("#log-slow").html("click: " + (new Date().getTime() - timeTouch) + "ms");! }! return false;!});!

Page 37: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas

Evite CLICK use TOUCHEND

Page 38: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas
Page 39: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas

Fastclick

https://github.com/ftlabs/fastclick

Page 40: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas

$("body").on("touchend", ".fastclick", function() {! timeTouch = new Date().getTime();!});!!$("body").on("click", ".fastclick", function() {! if (timeTouch) {! $("#log-fast").html("touchend: " + (new Date().getTime() - timeTouch) + "ms");! } else {! alert("Execute esse exemplo em um device touch");! }! return false;!});!

Page 41: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas

#6

Page 42: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas
Page 43: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas

$("#page").animate();!

Page 44: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas

.page {! position: absolute;! width: 200px;! height:200px;! top:20px;! left:50;!}!!.page-left {! left: 50px;!}!.page-center {! left: 275px;!}!.page-right {! left: 500px;!}!!.transition {! transition-duration: .25s;!}!

Page 45: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas

Use CSS 3 Transitions +

Hardware Acceleration

Page 46: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas

.page {! position: absolute;! width: 200px;! height:200px;! top:20px;! left:50;! transform: translate3d(0,0,0);!}!!.page-left {! -webkit-transform: translate3d(30px, 0, 0);! transform: translate3d(31px, 0, 0);!}!.page-center {! -webkit-transform: translate3d(250px, 0, 0);! transform: translate3d(251px, 0, 0);!}!.page-right {! -webkit-transform: translate3d(470px, 0, 0);! transform: translate3d(471px, 0, 0);!}!!.transition {! -webkit-transition-duration: .25s;! transition-duration: .25s;!}!

Page 47: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas

Page Slider

https://github.com/ccoenraets/PageSlider

Page 48: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas

#7

Page 49: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas

• box-shadow • border-radius • gradients • text-align

Page 50: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas

Evite sombras e gradientes

Page 51: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas

#8

Page 52: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas

$("#contato-info a.back").on("touchend", clickHandler);!$("#contato-info a.back").attr("href", "#contato-info");!$("#contato-info a.back").css("color", "green");!$("#contato-info a.back").css("text-decoration", "none");!

Page 53: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas

Ext.ComponentQuery.query('contactinfo button#back')[0].on('tap', clickHandler);!Ext.ComponentQuery.query('contactinfo button#back')[0].setCls('backBtn');!Ext.ComponentQuery.query('contactinfo button#back')[0].setLabelCls('labelCls');!

Page 54: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas

var $backBtn = $('#contato-info a.back');!$backBtn.on("touchend", clickHandler);!$backBtn.attr("href", "#contato-info");!$backBtn.css("color", "green");!$backBtn.css("text-decoration", "none");!

Page 55: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas

var backBtn = Ext.ComponentQuery.query('contactinfo button#back')[0];!backBtn.on('tap', clickHandler);!backBtn.setCls('backBtn');!backBtn.setLabelCls('labelCls');!

Page 56: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas

Minimize Browser Reflows

Page 57: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas

#9

Page 58: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas

XUI

Page 59: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas
Page 60: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas

x$(document).on("deviceready", function () {!! headingDiv = x$("#heading");! navigator.compass.getCurrentHeading(onSuccess, onError);! navigator.compass.watchHeading(onSuccess, onError, {frequency: 100});!! function onSuccess(heading) {! headingDiv.html(! 'Heading: ' + heading.magneticHeading + '&#xb0; ' +! convertToText(heading.magneticHeading) + '<br />' +! 'True Heading: ' + heading.trueHeading + '<br />' +! 'Accuracy: ' + heading.headingAccuracy! );! ! // Alter the CSS properties to rotate the rose image! x$(".rose").css({! "-webkit-transform":! "rotate(-" + heading.magneticHeading + "deg)",! "transform":! "rotate(-" + heading.magneticHeading + "deg)"! });! }!! function onError() {! headingDiv.html(! 'There was an error trying to ' +! 'locate your current bearing.'! );! }!});!

Page 61: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas

Topcoat

Page 62: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas

Cuidado com framework / lib da

moda

Page 63: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas
Page 64: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas

#10

Page 65: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas

.icon-user {! background-image: url(../images/user.png) !important;!}!!.icon-user-add {! background-image: url(../images/user_add.gif) !important;!}!!.icon-save {! background-image: url(../images/save.gif) !important;!}!!.icon-reset {! background-image: url(../images/stop.png) !important;!}!!.icon-grid {! background-image: url(../images/grid.png) !important;!}!!.icon-add {! background-image: url(../images/add.png) !important;!}!!.icon-delete {! background-image: url(../images/delete.png) !important;!}!

Page 66: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas
Page 67: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas

.icon {!! background-image:url(result.png);!}!!.icon-user {! background-position: 0px -156px;!}!!.icon-user-add {! background-position: 0px -130px;!}!!.icon-save {! background-position: 0px -78px;!}!!.icon-reset {! background-position: 0px -104px;!}!!.icon-grid {! background-position: 0px -52px;!}!!.icon-add {! background-position: 0px 0px;!}!!.icon-delete {! background-position: 0px -26px;!}!

Page 68: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas

Build Otimizado

Agrega Valor!

Page 69: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas
Page 70: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas
Page 71: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas

http://jquerymobile.com/download-builder/

Page 72: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas

OTIMIZE JS, CSS, HTML

Page 73: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas

http://browserdiet.com/pt/

Page 74: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas
Page 75: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas

https://github.com/loiane/mobile-hibrido-performance

Page 76: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas

http://loiane.com

facebook.com/loianegroner

@loiane

https://github.com/loiane

youtube.com/user/Loianeg

Page 77: FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas

Obrigada!