SlideShare a Scribd company logo
Sencha @ XeroCraig Walker, Chief Technology Officerwww.xero.com
ExtJS @ XeroCraig Walker, Chief Technology Officerwww.xero.com
@storminwalkerCraig Walker, Chief Technology Officerwww.xero.com
Who is Xero?Started in 2006 by Rod Drury and Hamish EdwardsIPO in June 2007100 staff in 7 locations (HQ in Wellington) and over 27,000 customers in over 50 countriesA New Zealand business with global aspirations
What is Xero?Software-as-a-Service small business platform starting as an online accounting systemRevolutionising the way small businesses are managedStaff and advisors all connected and unconstrained by legacy process or technology
Xero Business
The Xero FrameworkPure end-to-end web development framework designed from the ground up to be the platform for XeroHTML, JavaScriptASP.NET 4.0/XSLT/ExtJSXSLTASP.NETBusiness event (transaction) engineC#/WCFMulti-dimensional general ledgerObject relational modelLLBLGen ProMulti-tenanted data modelSQL Server 2008
XSLT & ASP.NETMVC pattern using ASP.NET as a platform and XSLT as the view engineCombined with integrated conventions XSLT is a robust and fast view engineAllows our designers to incorporate their designs into the application without needing to be programmersIt’s all about painting screens
PrototypeScript.aculo.us
The Invoice Grid
What we likedThe grid!Pretty out-of-the-boxAbility to theme using pure CSSImpressive component libraryObject-orientedEvent subsystemPerformance
What we didn’tWicked learning curveHTML is fugly (heavy DOM)Theming was harder than expectedLack of a distribution builderMaintainability – very easy to write very bad codePerformance
UIExtJSJSONServer
UIExtJSJSONJSONJSONServerServerServer
Progressive Enhancement
Sencha At Xero
UIExtJSHTMLJSONHTMLHTTPHandlerASP.NET
Evolution
Static classesExt.ns(“XERO”, “XERO.yada”);XERO.yada.MyClass = {init: function() {    new Ext.Panel({renderTo: “divId”,cls: “xero-panel”,     items: [        new Ext.grid.GridPanel({ … })     ]    });  }} console.log(XERO.yada.MyClass.init());
ComponentisedExt.ns(“XERO”, “XERO.yada”);XERO.yada.MyPanel = Ext.extend(Ext.Panel, {cls: “xero-panel”,renderTo: “divId”,initComponent: function() {this.grid = new Ext.grid.GridPanel({ … });this.items = [ this.grid ];XERO.yada.MyPanel.superclass.initComponent.call(this); }});Ext.reg(“xero-panels-mypanel”, XERO.yada.MyPanel);varmyPanel = Ext.create({ xtype: “xero-panels-mypanel”, renderTo: “anotherDivId” });
Xero Help
UIExtJSJSONASP.NET MVC
Xero Personal
UIExtJSHTMLJSONHTMLASP.NET MVC
Xero Touch
UISencha TouchJSONASP.NET MVC
Why Sencha Touch?Cross-platformLooks native, feels nativeFaster, cheaper, easier to build withHighly customisableFlexible deploymentHTML5/CSS3 goodness
Sencha Touch ≈ ExtJS 4.0
Ext.regControllerControllerModelViewExt.regModelExt.regStoreExt.extend(Ext.Panel { ...}
ThemingSASS & Compass (compass-style.org)CSS3 is awesome – SCSS is awesomer@import “compass/css3/gradient”;$width: 100px;.button {  width: $width;  .linear {@include linear-gradient(color-stops(white, #c39 30%, #b7f 70%, #aaa)   );  }}.button {  width: 100px;}.button .linear {background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-   stop(0%, #ffffff), color-stop(30%, #cc3399), color-stop(70%,    #bb77ff), color-stop(100%, #aaaaaa)); background-image: -moz-linear-gradient(top, #ffffff 0%, #cc3399    30%, #bb77ff 70%, #aaaaaa 100%);background-image: linear-gradient(top, #ffffff 0%, #cc3399 30%,    #bb77ff 70%, #aaaaaa 100%);}
Tips & Tricks
ToolsBrowsers – obviouslyFirebug (getfirebug.com)Illumination (illumination-for-developers.com)Web InspectorYSlow (developer.yahoo.com/yslow)
Object-orientedUse namespaces to define your libraryDefine components – code for reusabilityExtend first, write plugins second (not at all if possible)
Events rock!Use events to communicate between componentsUse an event managerUse event delegationExt.get('header').on('click', function(e,target){  if (Ext.get(target).is('.item')){  }}, this, {  delegate: 'a.menu’})
Override appropriatelyDo not edit the library filesDO NOT EDIT THE LIBRARY FILES!Use an overrides file if you need to override the frameworkDo the same with CSS (but you should be using cls properties)
Define a directory structureBreak your code into small filesUse build tools to compile for performanceUse extjs-debug-all.js& extjs-debug-base.js during dev(but never prod!)Keep the framework up-to-date – upgrade as often as you can
Worry about performanceUnderstand client-side performance rules & use themconcatenate, minify, compress!
ThemingUse CSSUnderstand XTemplate
Sencha.comRead the forumsRead the docsRead the source!
Any questions?www.xero.com
We’re always hiring!www.xero.com/careers/

More Related Content

PDF
Progressive Web Apps. What, why and how
PDF
Top Insights for Your WordPress Site
PDF
Better PHP-Frontend Integration with Tungsten.js
PDF
An Exploration of Frameworks – and Why We Built Our Own
PDF
Tungsten.js: Building a Modular Framework
PDF
"Serverless: The Future of Software Architecture" by Jason Wihardja (Bizzy In...
PPTX
Deploying a static website on Azure for $5 / month
PDF
The Business Value of a PaaS (presented by Kieron Sambrook Smith, Chief Comme...
Progressive Web Apps. What, why and how
Top Insights for Your WordPress Site
Better PHP-Frontend Integration with Tungsten.js
An Exploration of Frameworks – and Why We Built Our Own
Tungsten.js: Building a Modular Framework
"Serverless: The Future of Software Architecture" by Jason Wihardja (Bizzy In...
Deploying a static website on Azure for $5 / month
The Business Value of a PaaS (presented by Kieron Sambrook Smith, Chief Comme...

What's hot (20)

PDF
Vered Flis: Because performance matters! Architecture Next 20
PPTX
Progressive Web Application - Advanced Topics
PPTX
Progressive Web Apps
PPTX
Intro to web development - kingscel
PDF
Security Webinar: Harden the Heart of Your WordPress SiteSe
PPTX
Lazy load Website Assets
PPTX
What’s right & wrong with WCF-WebHTTP Adapter?
KEY
Lessons learned with HTML5
PDF
Essential On-Page SEO
PPTX
Host, deploy & scale Blazor Server Apps
PDF
Fully Optimized
PPTX
Microsoft WebMatrix Platform Overview
PPTX
Front end optimization
PPTX
ASP.NET Quick Wins - 20 Tips and Tricks To Shift Your Application into High Gear
PDF
WordPress Hosting Survival Guide
PDF
Core Web Vitals Optimization for any website, especially WordPress
PDF
AEM responsive
PPTX
WordPress Affiliate Toolkit - Affiliate Summit East 2014
PDF
Mobile web apps in pure Java
PDF
Living on the Edge: Elevating your SEO toolkit to the CDN
Vered Flis: Because performance matters! Architecture Next 20
Progressive Web Application - Advanced Topics
Progressive Web Apps
Intro to web development - kingscel
Security Webinar: Harden the Heart of Your WordPress SiteSe
Lazy load Website Assets
What’s right & wrong with WCF-WebHTTP Adapter?
Lessons learned with HTML5
Essential On-Page SEO
Host, deploy & scale Blazor Server Apps
Fully Optimized
Microsoft WebMatrix Platform Overview
Front end optimization
ASP.NET Quick Wins - 20 Tips and Tricks To Shift Your Application into High Gear
WordPress Hosting Survival Guide
Core Web Vitals Optimization for any website, especially WordPress
AEM responsive
WordPress Affiliate Toolkit - Affiliate Summit East 2014
Mobile web apps in pure Java
Living on the Edge: Elevating your SEO toolkit to the CDN
Ad

Viewers also liked (6)

PDF
Xero News is Good News
PPTX
Xero accounting
PPSX
Xero Client Presentation
PDF
Xero | Better by Design
PDF
Cloud Xero #1 - Intro to Cloud Computing
PDF
What is Xero cloud accounting software?
Xero News is Good News
Xero accounting
Xero Client Presentation
Xero | Better by Design
Cloud Xero #1 - Intro to Cloud Computing
What is Xero cloud accounting software?
Ad

Similar to Sencha At Xero (20)

PPTX
Ext Js introduction and new features in Ext Js 6
PPTX
Introduction to ExtJS and its new features
PDF
Cross Platform Mobile App Development - An Introduction to Sencha Touch
PDF
DogFoodCon 2014: Building Powerful Enterprise Applications Using Sencha's Tec...
PPTX
Building Rich Internet Applications with Ext JS
PDF
Community Code: Xero
PPTX
Innovations in Sencha Tooling and Framework
PPTX
Ext JS Introduction
PPTX
Kickstart sencha extjs
PDF
[Sencha 엔터프라이즈 웹애플리케이션 세미나] Enterprise Level Web Application w_ Ext JS 5
PDF
Workshop on Sencha Touch - Part 5 - UI components in sencha touch
PPT
Introduction to the ExtJS Javascript framework for rich apps in every browser
PDF
Ext js 6
PPT
ExtJS Sencha Touch
PPTX
Extjs3.4 Migration Notes
PPTX
SenchaCon 2016: Theming the Modern Toolkit - Phil Guerrant
PDF
Introducing Ext JS 4
PPT
Sencha touch
PDF
Sencha Roadshow 2017: Sencha Best Practices: Coworkee App
PDF
James Turner (Caplin) - Enterprise HTML5 Patterns
Ext Js introduction and new features in Ext Js 6
Introduction to ExtJS and its new features
Cross Platform Mobile App Development - An Introduction to Sencha Touch
DogFoodCon 2014: Building Powerful Enterprise Applications Using Sencha's Tec...
Building Rich Internet Applications with Ext JS
Community Code: Xero
Innovations in Sencha Tooling and Framework
Ext JS Introduction
Kickstart sencha extjs
[Sencha 엔터프라이즈 웹애플리케이션 세미나] Enterprise Level Web Application w_ Ext JS 5
Workshop on Sencha Touch - Part 5 - UI components in sencha touch
Introduction to the ExtJS Javascript framework for rich apps in every browser
Ext js 6
ExtJS Sencha Touch
Extjs3.4 Migration Notes
SenchaCon 2016: Theming the Modern Toolkit - Phil Guerrant
Introducing Ext JS 4
Sencha touch
Sencha Roadshow 2017: Sencha Best Practices: Coworkee App
James Turner (Caplin) - Enterprise HTML5 Patterns

Recently uploaded (20)

PDF
A novel scalable deep ensemble learning framework for big data classification...
PPTX
Chapter 5: Probability Theory and Statistics
PDF
Encapsulation_ Review paper, used for researhc scholars
PPTX
1. Introduction to Computer Programming.pptx
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
August Patch Tuesday
PDF
Encapsulation theory and applications.pdf
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
Approach and Philosophy of On baking technology
PPTX
SOPHOS-XG Firewall Administrator PPT.pptx
PDF
A comparative study of natural language inference in Swahili using monolingua...
PPTX
Tartificialntelligence_presentation.pptx
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
A comparative analysis of optical character recognition models for extracting...
PDF
Hybrid model detection and classification of lung cancer
PPTX
A Presentation on Touch Screen Technology
PDF
Enhancing emotion recognition model for a student engagement use case through...
PDF
DP Operators-handbook-extract for the Mautical Institute
PPTX
Programs and apps: productivity, graphics, security and other tools
A novel scalable deep ensemble learning framework for big data classification...
Chapter 5: Probability Theory and Statistics
Encapsulation_ Review paper, used for researhc scholars
1. Introduction to Computer Programming.pptx
Agricultural_Statistics_at_a_Glance_2022_0.pdf
August Patch Tuesday
Encapsulation theory and applications.pdf
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
Approach and Philosophy of On baking technology
SOPHOS-XG Firewall Administrator PPT.pptx
A comparative study of natural language inference in Swahili using monolingua...
Tartificialntelligence_presentation.pptx
Digital-Transformation-Roadmap-for-Companies.pptx
A comparative analysis of optical character recognition models for extracting...
Hybrid model detection and classification of lung cancer
A Presentation on Touch Screen Technology
Enhancing emotion recognition model for a student engagement use case through...
DP Operators-handbook-extract for the Mautical Institute
Programs and apps: productivity, graphics, security and other tools

Sencha At Xero