+ All Categories
Home > Technology > jQuery Mobile: Optimizing Perfromance

jQuery Mobile: Optimizing Perfromance

Date post: 01-Nov-2014
Category:
Upload: alexander-schmitz
View: 5,568 times
Download: 1 times
Share this document with a friend
Description:
Performance is a major concern on mobile platforms. jQuery Mobile 1.4 adds a number of performance related options and features to help you speed up your mobile site along with a new theme designed to make your site render as fast as possible. Learn Tips and tricks to make your site as fast as it can. Covered in this talk will be not only framework optimizations but server side tricks to minimize transfer but page initialization times. Topics covered will include: Custom Builds Providing pre-rendered content to avoid dom manipulation (New in 1.4) Skipping parsing data-attributes when defaults are OK (New in 1.4) Including common navigation components outside the page to avoid re downloading and initializing on every page load (New in 1.4) Avoiding sending unneeded page sections from server on ajax requests (while maintaining the ability to refresh) Taking advantage of new theme to avoid need for enhancement (New in 1.4) 1.4.1 released Upcoming work on performance: New high performance css framework initialization free widgets General mobile performance best practices and tips
35
jQuery Mobile: Optimizing Performance jQuery Mobile: Optimizing Performance Back Forwar d Alex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitz Alex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitz What have you done for me lately?
Transcript
Page 1: jQuery Mobile: Optimizing Perfromance

jQuery Mobile: Optimizing PerformancejQuery Mobile: Optimizing PerformanceBack Forward

Alex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitzAlex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitz

What have you done for me lately?

Page 2: jQuery Mobile: Optimizing Perfromance

jQuery Mobile: Optimizing PerformancejQuery Mobile: Optimizing PerformanceBack Forward

Alex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitzAlex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitz

About me:• 16 Years experience in

web development

• jQuery Mobile Development Lead

• jQuery UI Team member

• Current focus: Mobile and UI merger

Page 3: jQuery Mobile: Optimizing Perfromance

jQuery Mobile: Optimizing PerformancejQuery Mobile: Optimizing PerformanceBack Forward

Alex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitzAlex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitz

Now to answer my own question…

➡ What have we done for you lately??What have we done for you lately??

➡ jQuery Mobile 1.4.1 comingjQuery Mobile 1.4.1 coming

➡ Lots of bug fixesLots of bug fixes

➡ Major swipe and panel fixesMajor swipe and panel fixes

➡ Over 60 bug fixes Over 60 bug fixes

➡ What have we done for you lately??What have we done for you lately??

➡ jQuery Mobile 1.4.1 comingjQuery Mobile 1.4.1 coming

➡ Lots of bug fixesLots of bug fixes

➡ Major swipe and panel fixesMajor swipe and panel fixes

➡ Over 60 bug fixes Over 60 bug fixes

Page 4: jQuery Mobile: Optimizing Perfromance

jQuery Mobile: Optimizing PerformancejQuery Mobile: Optimizing PerformanceBack Forward

Alex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitzAlex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitz

I don’t know about you but waiting drives me nuts!

Page 5: jQuery Mobile: Optimizing Perfromance

jQuery Mobile: Optimizing PerformancejQuery Mobile: Optimizing PerformanceBack Forward

Alex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitzAlex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitz

Why is mobile performance so

important?

This comes down to 2 main components

1.) Cellular connection

2.) Device hardware performance

Page 6: jQuery Mobile: Optimizing Perfromance

jQuery Mobile: Optimizing PerformancejQuery Mobile: Optimizing PerformanceBack Forward

Alex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitzAlex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitz

Page 7: jQuery Mobile: Optimizing Perfromance

jQuery Mobile: Optimizing PerformancejQuery Mobile: Optimizing PerformanceBack Forward

Alex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitzAlex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitz

Time Warner Cable Road Runner Basic Service

Page 8: jQuery Mobile: Optimizing Perfromance

jQuery Mobile: Optimizing PerformancejQuery Mobile: Optimizing PerformanceBack Forward

Alex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitzAlex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitz

AT&T 3G

Service

Page 9: jQuery Mobile: Optimizing Perfromance

jQuery Mobile: Optimizing PerformancejQuery Mobile: Optimizing PerformanceBack Forward

Alex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitzAlex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitz

On average mobile devices are

3X Slower!

Page 10: jQuery Mobile: Optimizing Perfromance

jQuery Mobile: Optimizing PerformancejQuery Mobile: Optimizing PerformanceBack Forward

Alex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitzAlex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitz

Simplify your pages!

➡ Reduce the widgets in each pageReduce the widgets in each page

➡ Reduce the size of your pagesReduce the size of your pages

➡ Limit the size of your lists and tablesLimit the size of your lists and tables

➡ Use paginationUse pagination

➡ Just like this list should be reducedJust like this list should be reduced

➡ Reduce the widgets in each pageReduce the widgets in each page

➡ Reduce the size of your pagesReduce the size of your pages

➡ Limit the size of your lists and tablesLimit the size of your lists and tables

➡ Use paginationUse pagination

➡ Just like this list should be reducedJust like this list should be reduced

Page 11: jQuery Mobile: Optimizing Perfromance

jQuery Mobile: Optimizing PerformancejQuery Mobile: Optimizing PerformanceBack Forward

Alex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitzAlex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitz

To reduce download time and http requests make sure you ...

➡ Combine all scripts Combine all scripts

➡ Combine all cssCombine all css

➡ Minify all scripts and cssMinify all scripts and css

➡ Do not include scripts in the pageDo not include scripts in the page

➡ Consider multi-page templateConsider multi-page template

➡ Combine all scripts Combine all scripts

➡ Combine all cssCombine all css

➡ Minify all scripts and cssMinify all scripts and css

➡ Do not include scripts in the pageDo not include scripts in the page

➡ Consider multi-page templateConsider multi-page template

Page 12: jQuery Mobile: Optimizing Perfromance

jQuery Mobile: Optimizing PerformancejQuery Mobile: Optimizing PerformanceBack Forward

Alex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitzAlex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitz

Multi-Page Template

➡ Load all pages with single requestLoad all pages with single request

➡ Reduces Number of HTTP requestsReduces Number of HTTP requests

➡ Faster page load Faster page load

➡ Faster TransitionsFaster Transitions

➡ Has its limitations...Has its limitations...

➡ Load all pages with single requestLoad all pages with single request

➡ Reduces Number of HTTP requestsReduces Number of HTTP requests

➡ Faster page load Faster page load

➡ Faster TransitionsFaster Transitions

➡ Has its limitations...Has its limitations...

Page 13: jQuery Mobile: Optimizing Perfromance

jQuery Mobile: Optimizing PerformancejQuery Mobile: Optimizing PerformanceBack Forward

Alex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitzAlex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitz

Multi-Page TemplateLimitations

➡ Slower initial page downloadSlower initial page download

➡ Leads to a large DomLeads to a large Dom

➡ Uses more system memory Uses more system memory

➡ cannot load multi page via AJAXcannot load multi page via AJAX

➡ Not good for large # of pagesNot good for large # of pages

➡ Slower initial page downloadSlower initial page download

➡ Leads to a large DomLeads to a large Dom

➡ Uses more system memory Uses more system memory

➡ cannot load multi page via AJAXcannot load multi page via AJAX

➡ Not good for large # of pagesNot good for large # of pages

Page 14: jQuery Mobile: Optimizing Perfromance

jQuery Mobile: Optimizing PerformancejQuery Mobile: Optimizing PerformanceBack Forward

Alex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitzAlex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitz

<!DOCTYPE html><html><head>

<title>Page Title</title>

<meta name="viewport" content="width=device-width, initial-scale=1">

<link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.0-alpha.2/jquery.mobile-1.4.0-alpha.2.min.css" /><script src="http://code.jquery.com/jquery-1.9.1.min.js"></script><script src="http://code.jquery.com/mobile/1.4.0-alpha.2/jquery.mobile-1.4.0-alpha.2.min.js"></script>

</head><body>

<div data-role="page">

<div data-role="header"><h1>Page Title</h1>

</div><!-- /header -->

<div data-role="content"><p>Page content goes here.</p>

</div><!-- /content -->

<div data-role="footer"><h4>Page Footer</h4>

</div><!-- /footer --></div><!-- /page -->

</body></html>

Typical Single-Page Document

Page 15: jQuery Mobile: Optimizing Perfromance

jQuery Mobile: Optimizing PerformancejQuery Mobile: Optimizing PerformanceBack Forward

Alex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitzAlex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitz

Downfalls of Single Page

➡ Everything sent with every requestEverything sent with every request

➡ Only first div with data-role=”page” Only first div with data-role=”page” usedused

➡ Unused information sent with requestsUnused information sent with requests

➡ Unused info leads to extra processing Unused info leads to extra processing and bytes transferredand bytes transferred

➡ Everything sent with every requestEverything sent with every request

➡ Only first div with data-role=”page” Only first div with data-role=”page” usedused

➡ Unused information sent with requestsUnused information sent with requests

➡ Unused info leads to extra processing Unused info leads to extra processing and bytes transferredand bytes transferred

Page 16: jQuery Mobile: Optimizing Perfromance

jQuery Mobile: Optimizing PerformancejQuery Mobile: Optimizing PerformanceBack Forward

Alex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitzAlex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitz

Add some server side processing to optimize the template

<?phpif (!isset($_SERVER['HTTP_X_REQUESTED_WITH']) || strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) !== 'xmlhttprequest') {

?><!DOCTYPE html><html><head>

<title>Page Title</title>

<meta name="viewport" content="width=device-width, initial-scale=1">

<link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.0-alpha.2/jquery.mobile-1.4.0-alpha.2.min.css" /><script src="http://code.jquery.com/jquery-1.9.1.min.js"></script><script src="http://code.jquery.com/mobile/1.4.0-alpha.2/jquery.mobile-1.4.0-alpha.2.min.js"></script>

</head><body><?php } ?><div data-role="page">

<div data-role="header"><h1>Page Title</h1>

</div><!-- /header -->

<div data-role="content"><p>Page content goes here.</p>

</div><!-- /content -->

<div data-role="footer"><h4>Page Footer</h4>

</div><!-- /footer --></div><!-- /page --><?php

if (!isset($_SERVER['HTTP_X_REQUESTED_WITH']) || strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) !== 'xmlhttprequest') {?></body></html><?php } ?>

Page 17: jQuery Mobile: Optimizing Perfromance

jQuery Mobile: Optimizing PerformancejQuery Mobile: Optimizing PerformanceBack Forward

Alex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitzAlex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitz

This reduces what is sent during ajax requests to:

<div data-role="page">

<div data-role="header"><h1>Page Title</h1>

</div><!-- /header -->

<div data-role="content"><p>Page content goes here.</p>

</div><!-- /content -->

<div data-role="footer"><h4>Page Footer</h4>

</div><!-- /footer --></div><!-- /page -->

Page 18: jQuery Mobile: Optimizing Perfromance

jQuery Mobile: Optimizing PerformancejQuery Mobile: Optimizing PerformanceBack Forward

Alex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitzAlex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitz

Starting in jQuery Mobile 1.4 widgets can be used outside

pages

So lets take our updated template 1 step further...

Page 19: jQuery Mobile: Optimizing Perfromance

jQuery Mobile: Optimizing PerformancejQuery Mobile: Optimizing PerformanceBack Forward

Alex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitzAlex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitz

Final version of the single page template

<?phpif (!isset($_SERVER['HTTP_X_REQUESTED_WITH']) || strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) !== 'xmlhttprequest') {

?><!DOCTYPE html><html><head>

<title>Page Title</title>

<meta name="viewport" content="width=device-width, initial-scale=1">

<link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.0-alpha.2/jquery.mobile-1.4.0-alpha.2.min.css" /><script src="http://code.jquery.com/jquery-1.9.1.min.js"></script><script src="http://code.jquery.com/mobile/1.4.0-alpha.2/jquery.mobile-1.4.0-alpha.2.min.js"></script>

</head><body>

<div data-role="header"><h1>Page Title</h1>

</div><!-- /header -->

<?php } ?>

<div data-role="page"><div data-role="content">

<p>Page content goes here.</p></div><!-- /content -->

</div><!-- /page -->

<?phpif (!isset($_SERVER['HTTP_X_REQUESTED_WITH']) || strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) !== 'xmlhttprequest') {

?><div data-role="footer">

<h4>Page Footer</h4></div><!-- /footer -->

</body></html><?php } ?>

Page 20: jQuery Mobile: Optimizing Perfromance

jQuery Mobile: Optimizing PerformancejQuery Mobile: Optimizing PerformanceBack Forward

Alex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitzAlex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitz

Making the final markup sent during an ajax request:

<div data-role="page"><div data-role="content">

<p>Page content goes here.</p></div><!-- /content -->

</div><!-- /page -->

Is it just me or does this page look really empty???

Page 21: jQuery Mobile: Optimizing Perfromance

jQuery Mobile: Optimizing PerformancejQuery Mobile: Optimizing PerformanceBack Forward

Alex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitzAlex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitz

The updated template...

➡ Reduces bytes transferredReduces bytes transferred

➡ Reduces markup needing to be Reduces markup needing to be parsedparsed

➡ avoids init of common nav elementsavoids init of common nav elements

➡ Smoother transitionsSmoother transitions

➡ Faster page loadsFaster page loads

➡ Reduces bytes transferredReduces bytes transferred

➡ Reduces markup needing to be Reduces markup needing to be parsedparsed

➡ avoids init of common nav elementsavoids init of common nav elements

➡ Smoother transitionsSmoother transitions

➡ Faster page loadsFaster page loads

Page 22: jQuery Mobile: Optimizing Perfromance

jQuery Mobile: Optimizing PerformancejQuery Mobile: Optimizing PerformanceBack Forward

Alex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitzAlex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitz

Custom Builds...

➡ Reduce files sizeReduce files size

➡ Reduce library initialization timeReduce library initialization time

➡ Reduce page initialization timeReduce page initialization time

➡ Allow you to remove parts of the Allow you to remove parts of the library you don’t needlibrary you don’t need

➡ Reduce files sizeReduce files size

➡ Reduce library initialization timeReduce library initialization time

➡ Reduce page initialization timeReduce page initialization time

➡ Allow you to remove parts of the Allow you to remove parts of the library you don’t needlibrary you don’t need

Page 23: jQuery Mobile: Optimizing Perfromance

jQuery Mobile: Optimizing PerformancejQuery Mobile: Optimizing PerformanceBack Forward

Alex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitzAlex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitz

A custom build which includes...•Full page and navigation

support•All custom events•Slide Transition•Flipswitch•Checkboxs and Radios•Textinputs•Listviews•Panels•Popups•Tables•Column Toggle Tables•Toolbars•Fixed Toolbars with workarounds•Loading Widget

Reduces JSby 50%

Reduces CSS

by 80%

Page 24: jQuery Mobile: Optimizing Perfromance

jQuery Mobile: Optimizing PerformancejQuery Mobile: Optimizing PerformanceBack Forward

Alex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitzAlex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitz

1.4 brings a new theme to minimize Dom manipulationPre-

enhancement

1.3 Post-enhance

1.4 Post-enhance

<button>Button</button>

<button class="ui-btn ui-shadow ui-corner-all" role="button">Button</button>

<div data-corners="true" data-shadow="true" data-iconshadow="true" data-wrapperels="span" data-theme="c" data-disabled="false" class="ui-btn ui-shadow ui-btn-corner-all ui-btn-up-c" aria-disabled="false">

<span class="ui-btn-inner"><span class="ui-btn-text">Button</span>

</span><button class="ui-btn-hidden" data-disabled="false">Button</button>

</div>

Page 25: jQuery Mobile: Optimizing Perfromance

jQuery Mobile: Optimizing PerformancejQuery Mobile: Optimizing PerformanceBack Forward

Alex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitzAlex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitz

Consider skipping auto-enhancement and widget use

for buttons and listviews.

➡ Avoid all Dom-manipAvoid all Dom-manip

➡ Avoid all associated JSAvoid all associated JS

➡ Exclude widgets from custom buildExclude widgets from custom build

➡ Only need to add classesOnly need to add classes

➡ Two of the most used widgetsTwo of the most used widgets

➡ Avoid all Dom-manipAvoid all Dom-manip

➡ Avoid all associated JSAvoid all associated JS

➡ Exclude widgets from custom buildExclude widgets from custom build

➡ Only need to add classesOnly need to add classes

➡ Two of the most used widgetsTwo of the most used widgets

Page 26: jQuery Mobile: Optimizing Perfromance

jQuery Mobile: Optimizing PerformancejQuery Mobile: Optimizing PerformanceBack Forward

Alex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitzAlex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitz

New in 1.4: The enhanced

optionTells the frame work that the Dom is already in

a post enhanced state.

Removes the need for all Dom manipulation on initialization so all that needs to be done is

attach handlers and set variables

Page 27: jQuery Mobile: Optimizing Perfromance

jQuery Mobile: Optimizing PerformancejQuery Mobile: Optimizing PerformanceBack Forward

Alex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitzAlex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitz

Widgets which currently support enhanced option:

➡Textinput

➡Button

➡Toolbars

➡Flipswitch

➡Controlgroup

➡Collapsible

➡Collapsible Set

➡Popup

➡Table

➡Page

Page 28: jQuery Mobile: Optimizing Perfromance

jQuery Mobile: Optimizing PerformancejQuery Mobile: Optimizing PerformanceBack Forward

Alex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitzAlex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitz

New in 1.4 the defaults flag.

by setting data-defaults=”true” you can now skip the reading of data-attribute defaults.

Page 29: jQuery Mobile: Optimizing Perfromance

jQuery Mobile: Optimizing PerformancejQuery Mobile: Optimizing PerformanceBack Forward

Alex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitzAlex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitz

New in 1.4 $.mobile.window & $.mobile.document

replaces $(window) & $(document)

Page 30: jQuery Mobile: Optimizing Perfromance

jQuery Mobile: Optimizing PerformancejQuery Mobile: Optimizing PerformanceBack Forward

Alex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitzAlex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitz

Don’t use auto initialization.

➡ Easy short cut but sacrifice Easy short cut but sacrifice performanceperformance

➡ Has to traverse the dom looking for Has to traverse the dom looking for attributes ( very slow selector )attributes ( very slow selector )

➡ Leave off data-roles and set keepNativeLeave off data-roles and set keepNative

➡ Call widgets in js as you would in UICall widgets in js as you would in UI

➡ Easy short cut but sacrifice Easy short cut but sacrifice performanceperformance

➡ Has to traverse the dom looking for Has to traverse the dom looking for attributes ( very slow selector )attributes ( very slow selector )

➡ Leave off data-roles and set keepNativeLeave off data-roles and set keepNative

➡ Call widgets in js as you would in UICall widgets in js as you would in UI

Page 31: jQuery Mobile: Optimizing Perfromance

jQuery Mobile: Optimizing PerformancejQuery Mobile: Optimizing PerformanceBack Forward

Alex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitzAlex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitz

In addition…

➡ Don’t use data-attributes for optionsDon’t use data-attributes for options

➡ parsing these is very slowparsing these is very slow

➡ Make sure you set new Defaults flagMake sure you set new Defaults flag

➡ pass options object to widget when pass options object to widget when you call it.you call it.

➡ Don’t use data-attributes for optionsDon’t use data-attributes for options

➡ parsing these is very slowparsing these is very slow

➡ Make sure you set new Defaults flagMake sure you set new Defaults flag

➡ pass options object to widget when pass options object to widget when you call it.you call it.

Page 32: jQuery Mobile: Optimizing Perfromance

jQuery Mobile: Optimizing PerformancejQuery Mobile: Optimizing PerformanceBack Forward

Alex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitzAlex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitz

What we are looking into for the future.

Page 33: jQuery Mobile: Optimizing Perfromance

jQuery Mobile: Optimizing PerformancejQuery Mobile: Optimizing PerformanceBack Forward

Alex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitzAlex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitz

Initialization Free Widgets

➡ Makes it so you don’t need to initialize a Makes it so you don’t need to initialize a widgetwidget

➡ Write your markup and just works no need Write your markup and just works no need to call the widgetto call the widget

➡ looking into this for the far futurelooking into this for the far future

➡ http://tech.pro/tutorial/1660/initialization-free-widgets

➡ No current plansNo current plans

➡ Makes it so you don’t need to initialize a Makes it so you don’t need to initialize a widgetwidget

➡ Write your markup and just works no need Write your markup and just works no need to call the widgetto call the widget

➡ looking into this for the far futurelooking into this for the far future

➡ http://tech.pro/tutorial/1660/initialization-free-widgets

➡ No current plansNo current plans

Page 34: jQuery Mobile: Optimizing Perfromance

jQuery Mobile: Optimizing PerformancejQuery Mobile: Optimizing PerformanceBack Forward

Alex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitzAlex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitz

High Performance CSS framework

➡ Learned from original mobile theme, 1.4 theme, Learned from original mobile theme, 1.4 theme, UI themeUI theme

➡ BEM class structureBEM class structure

➡ Rendering performance testsRendering performance tests

➡ Shared by UI and MobileShared by UI and Mobile

➡ Very early workVery early work

➡ Learned from original mobile theme, 1.4 theme, Learned from original mobile theme, 1.4 theme, UI themeUI theme

➡ BEM class structureBEM class structure

➡ Rendering performance testsRendering performance tests

➡ Shared by UI and MobileShared by UI and Mobile

➡ Very early workVery early work

Page 35: jQuery Mobile: Optimizing Perfromance

jQuery Mobile: Optimizing PerformancejQuery Mobile: Optimizing PerformanceBack Forward

Alex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitzAlex Schmitz IRC: arschmitz - Github: arschmitz - Twitter: @alexrschmitz

[email protected]

Now thats true native behavior!


Recommended