Transcript
Page 1: Ext JS 4: Advanced Expert Techniques

Ext JS 4: Advanced Expert Techniques

Rich Waters

SenchaCon - 10/25/11

Wednesday, November 2, 11

Page 2: Ext JS 4: Advanced Expert Techniques

About Me

Chief Application Architect & Founder @ Extnd LLC

Ext JS Developer since 2006

YUI-Ext 0.3.x

Javascript, Ext JS & Sencha Touch Instructor

Ext 2.x - 4.x, Touch 1.x (2.x soon!)

Wednesday, November 2, 11

Page 3: Ext JS 4: Advanced Expert Techniques

Components

{con!g}

Wednesday, November 2, 11

Page 4: Ext JS 4: Advanced Expert Techniques

Wednesday, November 2, 11

Page 5: Ext JS 4: Advanced Expert Techniques

Wednesday, November 2, 11

Page 6: Ext JS 4: Advanced Expert Techniques

Component LifecycleInitialization

Destruction

Rendering

Wednesday, November 2, 11

Page 7: Ext JS 4: Advanced Expert Techniques

Intialization Overview

Instantiate Class

Parse & Apply Con!gurations

De!ne Events

[Container] Initialize items

Wednesday, November 2, 11

Page 8: Ext JS 4: Advanced Expert Techniques

Instantiate Class

Ext.ClassManager.instantiate (Ext.create)

Locate class [lookup xtype]

Fires Synchronous load call if not present

Call class constructor

Wednesday, November 2, 11

Page 9: Ext JS 4: Advanced Expert Techniques

ConstructorNot just traditional con!g object

con!g.initialCon!g

con!g.tagName || con!g.dom

Ext.apply {con!g}

addEvents

Generate id

call initComponent

Wednesday, November 2, 11

Page 10: Ext JS 4: Advanced Expert Techniques

initComponent

Initialize event listeners

Enable bubbleEvents

[Container] initItems

Create items MixedCollection

Recurse add on items

Wednesday, November 2, 11

Page 11: Ext JS 4: Advanced Expert Techniques

[Container] add

Apply defaults

Lookup or Create component

Event: beforeadd

Call onBeforeAdd

Inject component into items MixedCollection

Wednesday, November 2, 11

Page 12: Ext JS 4: Advanced Expert Techniques

[Container] add

Call child Component.onAdded

Event: added

Call onAdd

Event: add

Wednesday, November 2, 11

Page 13: Ext JS 4: Advanced Expert Techniques

Constructor

Register with ComponentManager

Initialize Obserable/State mixins

Initialize plugins

Call renderTo / autoShow

Wednesday, November 2, 11

Page 14: Ext JS 4: Advanced Expert Techniques

Rendering Overview

Generate DOM using XTemplate

Insert DOM Nodes

Gather DOM references

Calculate layouts

Wednesday, November 2, 11

Page 15: Ext JS 4: Advanced Expert Techniques

Render

Event: beforerender

Get container reference (if any)

Call onRender

Wednesday, November 2, 11

Page 16: Ext JS 4: Advanced Expert Techniques

onRender

Initialize inline styles/padding/margin

Build DOM (autoEl)

Append DOM to page

IE frame con!g support (wrap with tr/tc/tl/mr/mc/etc.)

Wednesday, November 2, 11

Page 17: Ext JS 4: Advanced Expert Techniques

onRender

Build renderTpl

Initialize renderData

Add classnames (baseCls, componentCls, additionalCls, ui class)

Append HTML to DOM

Initialize renderSelectors / childEls

Wednesday, November 2, 11

Page 18: Ext JS 4: Advanced Expert Techniques

render

Make visible

Event: render

Initialize content (html/contentEl/data+tpl)

Call afterRender

Wednesday, November 2, 11

Page 19: Ext JS 4: Advanced Expert Techniques

afterRender

Create Layout

Call Layout’s layout

Wednesday, November 2, 11

Page 20: Ext JS 4: Advanced Expert Techniques

layout

Call beforeLayout

[Container] renderItems

Create componentLayout

Call afterLayout

Call afterComponentLayout

Event: resize

doOwnerCtLayouts

Wednesday, November 2, 11

Page 21: Ext JS 4: Advanced Expert Techniques

afterRender

Initalize resizable

Initalize draggable

Initalize ARIA roles

Wednesday, November 2, 11

Page 22: Ext JS 4: Advanced Expert Techniques

render

Event: afterrender

Call initEvents

Initialize hidden/disabled

Wednesday, November 2, 11

Page 23: Ext JS 4: Advanced Expert Techniques

Destruction Overview

Destroy DOM nodes

Free event handlers

[Container] Destroy children

Clean up references

Wednesday, November 2, 11

Page 24: Ext JS 4: Advanced Expert Techniques

destroy

Event: beforedestroy

Call beforeDestroy

Component speci!c removal

Remove from ownerCt

Call onDestroy

Removes internal refs (proxy/resizer/componentLayout/loadMask/"oatingItems)

Wednesday, November 2, 11

Page 25: Ext JS 4: Advanced Expert Techniques

destroy

Destroy plugins

Remove DOM node

Event: destroy

Unregister with ComponentManager

Clear event listeners

Remove element refs

Wednesday, November 2, 11

Page 26: Ext JS 4: Advanced Expert Techniques

Code!

Custom component excessively nesting panels & not optimizing events

Quick side track - Event Delegation

Custom component rewritten using renderTpl/renderData/childEls/delegated events

Second renderTpl example - MultiSortTemplateColumn

Utility function examples (TextMetrics/MixedCollection/DelayedTask)

Wednesday, November 2, 11

Page 27: Ext JS 4: Advanced Expert Techniques

Additional Resources

http://sencha.com/learn/components

Ext JS in Action (4 MEAP)

http://manning.com/garcia3/

Wednesday, November 2, 11

Page 28: Ext JS 4: Advanced Expert Techniques

Questions?

Rich Waters@rwaters

http://zerp.ly/rwaters

Wednesday, November 2, 11