ext js 4: advanced expert techniques

28
Ext JS 4: Advanced Expert Techniques Rich Waters SenchaCon - 10/25/11 Wednesday, November 2, 11

Upload: sencha

Post on 07-Nov-2014

6.091 views

Category:

Technology


2 download

DESCRIPTION

This session will take a detailed look into a variety of internal and less known properties of Ext JS. Topics range from component lifecycles to properties such as renderTpl, renderSelectors, childEls, renderData, and mon. Other topics include delegated events (where the framework utilizes it, and where you should be using them in your code) and many useful utility classes like MixedCollection, DelayedTask, TaskRunner, and more.Rich Waters is the Chief Application Architect & Founder at Extnd LLC. Rich has been working with Ext JS since the very beginning and was a core developer for versions 1.x through 3.x. He now focuses on instructing courses & helping companies implement Ext JS & Sencha Touch solutions

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