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

FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

Embed Size (px)

DESCRIPTION

FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas. Bauru - SP - 30 de agosto de 2014

Citation preview

Page 1: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

10 dicas de desempenho para apps mobile híbridas

Loiane Groner http://loiane.com

Page 2: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

Me, Myself && I

!

•Gerente de Desenv Projetos

•8+ XP TI

•Java, Sencha, Phonegap

•Cozinheira amadora

•http://loiane.com

•@loiane

Page 3: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

packpub.com amazon.com.br

livrariacultura.com.br

Page 4: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

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

Nov 2013

Page 5: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas
Page 6: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas
Page 7: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas
Page 8: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas
Page 9: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

I

Page 10: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas
Page 11: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

#1

Page 12: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

<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 13: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

<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: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

NÃO gere páginas no servidor

Page 15: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

Web Browser

Dispositivo

JavaScript

Arquivos Imagens/

Documentos

Banco de Dados caching

Page 16: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

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 17: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

JSON

Page 18: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

#2

Page 19: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

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

Page 20: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

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

Page 21: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

//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 22: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

//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 23: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

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 24: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

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 25: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

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

Page 26: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

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

Page 27: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

Mostre a view e depois carregue os

dados

Page 28: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

#3

Page 29: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

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 30: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

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 31: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

Be LAZY

Page 32: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

#4

Page 33: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas
Page 34: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

App com lista dos participantes do FrontInterior

Page 35: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

select count(*) from Participantes

App com lista dos participantes do FrontInterior

Page 36: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

select count(*) from Participantes

== 1000

App com lista dos participantes do FrontInterior

Page 37: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

select count(*) from Participantes

== 1000

App com lista dos participantes do FrontInterior

É muito dado?

Page 38: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

Paging / Paginação

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

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

Page 39: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

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

Page 40: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

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

Page 41: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

Dados Estáticos

LocalStorage SQLite - database Arquivo - JSON

Page 42: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

// 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 43: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

// 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 44: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

Faça cache dos dados

Page 45: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

#5

Page 46: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas
Page 47: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

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 48: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

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 49: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

Evite CLICK use TOUCHEND

Page 50: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas
Page 51: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

Fastclick

https://github.com/ftlabs/fastclick

Page 52: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

$("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 53: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

$("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 54: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

$("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 55: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

#6

Page 56: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas
Page 57: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

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

Page 58: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

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

Page 59: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

.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 60: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

.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 61: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

.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 62: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

Use CSS 3 Transitions +

Hardware Acceleration

Page 63: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

.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 64: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

.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 65: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

.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 66: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

Page Slider

https://github.com/ccoenraets/PageSlider

Page 67: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

#7

Page 68: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

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

Page 69: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

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

Page 70: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

Evite sombras e gradientes

Page 71: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

#8

Page 72: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

$("#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 73: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

$("#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 74: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

$("#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 75: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

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 76: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

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 77: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

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 78: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

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 79: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

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

Page 80: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

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

Page 81: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

Minimize Browser Reflows

Page 82: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

#9

Page 83: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas
Page 84: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

XUI

Page 85: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas
Page 86: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

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 87: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

Topcoat

Page 88: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

Cuidado com framework / lib da

moda

Page 89: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas
Page 90: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

#10

Page 91: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

.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 92: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

.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 93: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas
Page 94: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

.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 95: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

.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 96: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

Build Otimizado

Agrega Valor!

Page 97: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas
Page 98: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas
Page 99: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas
Page 100: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

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

Page 101: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

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

Page 102: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

OTIMIZE JS, CSS, HTML

Page 103: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

http://browserdiet.com/pt/

Page 104: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas
Page 105: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

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

Page 106: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

http://loiane.com

facebook.com/loianegroner

@loiane

https://github.com/loiane

youtube.com/user/Loianeg

Page 107: FrontInterior 2014: 10 dicas de desempenho para apps mobile hibridas

Obrigada!