SlideShare una empresa de Scribd logo
1 de 39
© 2017 Sencha Inc. • CONFIDENTIAL •
Introducing ExtReact:Adding
Powerful Sencha Components
to ReactApps
Mark Brocato
Engineering Director, Sencha
@mockaroodev
© 2017 Sencha Inc. • CONFIDENTIAL •
Ext JS
Ext JS
Components
Ext JS Framework
© 2017 Sencha Inc. • CONFIDENTIAL •
React: A Component Framework w/o Components
Ext JS
Components
Ext JS Framework
ExtReact
React.js
© 2017 Sencha Inc. • CONFIDENTIAL •
ExtReact
Use All Ext JS Components in React
© 2017 Sencha Inc. • CONFIDENTIAL •
Motivation for ExtReact
• No complete component libraries available for React
• Dependency fatigue
• Form without function
• Head start
• Data-driven, enterprise apps
© 2017 Sencha Inc. • CONFIDENTIAL •
ExtReact: 100+ Components
• Grid
• List
• Tree
• Calendar
• Layouts
• Form Fields
• Animations
• Charts
• D3 Visualizations
© 2017 Sencha Inc. • CONFIDENTIAL •
@extjs/reactor
GitHub: extjs-reactor
© 2017 Sencha Inc. • CONFIDENTIAL •
ExtReact vs Ext JS + React
ExtReact
• Separate license from Ext JS (annual
subscription, perpetual distribution
rights)
• Streamlined installation (NPM)
• Modern toolkit only (Ext JS 6.5)
Ext JS + Reactor
• Use your existing Ext JS license
• Traditional Ext JS installation process
• Modern + Classic toolkits
© 2017 Sencha Inc. • CONFIDENTIAL •
ExtReact Grid
<Grid title="Stock Prices" store={this.store}>
<Column text="Company" dataIndex="name"/>
<Column text="Price" dataIndex="price" formatter='usMoney'/>
<Column text="Change" dataIndex="priceChange"/>
<Column text="% Change" dataIndex="priceChangePct"/>
<Column text="Last Updated" dataIndex="lastChange" formatter='date("m/d/Y")'/>
</Grid>
© 2017 Sencha Inc. • CONFIDENTIAL •
ExtReact for Ext JS Developers
© 2017 Sencha Inc. • CONFIDENTIAL •
Ext.create({
xtype: 'list',
store: contacts,
grouped: true
});
Ext JS ExtReact
© 2017 Sencha Inc. • CONFIDENTIAL •
Ext.create({
xtype: 'list',
store: contacts,
grouped: true
});
import { List } from '@extjs/ext-react';
<List
store={contacts}
grouped
/>
Ext JS ExtReact
© 2017 Sencha Inc. • CONFIDENTIAL •
Ext.create({
xtype: 'list',
store: contacts,
grouped: true,
listeners: {
itemtap: function(list, index, target, record) {
console.log(`Tapped ${record.get('name')}`)
}
}
});
import { List } from '@extjs/ext-react';
<List
store={contacts}
grouped
/>
Ext JS ExtReact
© 2017 Sencha Inc. • CONFIDENTIAL •
Ext.create({
xtype: 'list',
store: contacts,
grouped: true,
listeners: {
itemtap: function(list, index, target, record) {
console.log(`Tapped ${record.get('name')}`)
}
}
});
import { List } from '@extjs/ext-react';
<List
store={contacts}
grouped
onItemTap={(list, index, target, record) => {
console.log(`Tapped ${record.get('name')}`)
}}
/>
Ext JS ExtReact
© 2017 Sencha Inc. • CONFIDENTIAL •
Ext.create({
xtype: 'list',
store: contacts,
grouped: true,
listeners: {
itemtap: function(list, index, target, record) {
console.log(`Tapped ${record.get('name')}`)
},
show: {
single: true,
fn: function() {
// load store
}
}
}
});
import { List } from '@extjs/ext-react';
<List
store={contacts}
grouped
onItemTap={(list, index, target, record) => {
console.log(`Tapped ${record.get('name')}`)
}}
/>
Ext JS ExtReact
© 2017 Sencha Inc. • CONFIDENTIAL •
Ext.create({
xtype: 'list',
store: contacts,
grouped: true,
listeners: {
itemtap: function(list, index, target, record) {
console.log(`Tapped ${record.get('name')}`)
},
show: {
single: true,
fn: function() {
// load store
}
}
}
});
import { List } from '@extjs/ext-react';
<List
store={contacts}
grouped
onItemTap={(list, index, target, record) => {
console.log(`Tapped ${record.get('name')}`)
}}
onShow={{
single: true,
fn: () => {
// load store
}
}}
/>
Ext JS ExtReact
© 2017 Sencha Inc. • CONFIDENTIAL •
Ext.create({
xtype: 'list',
store: contacts,
grouped: true,
listeners: {
itemtap: function(list, index, target, record) {
console.log(`Tapped ${record.get('name')}`)
},
show: {
single: true,
fn: function() {
// load store
}
}
},
itemTpl: (
'<div>' +
'<div>{firstName} {lastName}</div>' +
'<div>{title}</div>' +
'</div>'
)
});
import { List } from '@extjs/ext-react';
<List
store={contacts}
grouped
onItemTap={(list, index, target, record) => {
console.log(`Tapped ${record.get('name')}`)
}}
onShow={{
single: true,
fn: () => {
// load store
}
}}
/>
Ext JS ExtReact
© 2017 Sencha Inc. • CONFIDENTIAL •
Ext.create({
xtype: 'list',
store: contacts,
grouped: true,
listeners: {
itemtap: function(list, index, target, record) {
console.log(`Tapped ${record.get('name')}`)
},
show: {
single: true,
fn: function() {
// load store
}
}
},
itemTpl: (
'<div>' +
'<div>{firstName} {lastName}</div>' +
'<div>{title}</div>' +
'</div>'
)
});
import { List } from '@extjs/ext-react';
<List
store={contacts}
grouped
onItemTap={(list, index, target, record) => {
console.log(`Tapped ${record.get('name')}`)
}}
onShow={{
single: true,
fn: () => {
// load store
}
}}
itemTpl={data => (
<div>
<div>{data.firstName} {data.lastName}</div>
<div>{data.title}</div>
</div>
)}
/>
Ext JS ExtReact
© 2017 Sencha Inc. • CONFIDENTIAL •
Ext.create({
xtype: 'list',
store: contacts,
grouped: true,
listeners: {
...
},
itemTpl: (
'<div>' +
'<div>{firstName} {lastName}</div>' +
'<div>{title}</div>' +
'</div>'
)
items: [{
xtype: 'toolbar',
docked: 'top'
items: [{
xtype: 'button',
text: 'Refresh'
}]
}]
});
import { List } from '@extjs/ext-react';
<List
store={contacts}
grouped
onItemTap={(list, index, target, record) => {
console.log(`Tapped ${record.get('name')}`)
}}
onShow={{
single: true,
fn: () => {
// load store
}
}}
itemTpl={data => (
<div>
<div>{data.firstName} {data.lastName}</div>
<div>{data.title}</div>
</div>
)}
/>
Ext JS ExtReact
© 2017 Sencha Inc. • CONFIDENTIAL •
Ext.create({
xtype: 'list',
store: contacts,
grouped: true,
listeners: {
...
},
itemTpl: (
'<div>' +
'<div>{firstName} {lastName}</div>' +
'<div>{title}</div>' +
'</div>'
)
items: [{
xtype: 'toolbar',
docked: 'top'
items: [{
xtype: 'button',
text: 'Refresh'
}]
}]
});
20
import { List, Toolbar, Button } from '@extjs/ext-react';
<List
store={contacts}
grouped
...
itemTpl={data => (
<div>
<div>{firstName} {lastName}</div>
<div>{title}</div>
</div>
)}
>
<Toolbar>
<Button
text="Refresh"
/>
</Toolbar>
</List>
Ext JS ExtReact
© 2017 Sencha Inc. • CONFIDENTIAL •
ExtReact Components are Themable
• Each can be extended using SASS or Sencha Themer
Triton Material iOS
© 2017 Sencha Inc. • CONFIDENTIAL •
Sencha Themer
22
© 2017 Sencha Inc. • CONFIDENTIAL •
FAQ
• Controllers
• ViewModels
How much of the Ext JS framework will I use?
Components
Stores
Models
Grid, Tree, Calendar, etc…
Flux (Redux, MobX, et al...)
© 2017 Sencha Inc. • CONFIDENTIAL •
Components Virtual DOM DOMExtReact?
Ext JS
FAQ
Does ExtReact use the Virtual DOM?
© 2017 Sencha Inc. • CONFIDENTIAL •
FAQ
Can I reuse components from pure Ext JS apps?
import { reactify } from '@extjs/reactor';
const MyCustomComponent = reactify(MyPackage.MyCustomComponent);
...
render() {
return <MyCustomComponent ... />
}
© 2017 Sencha Inc. • CONFIDENTIAL •
ExtReact: Getting Set Up
© 2017 Sencha Inc. • CONFIDENTIAL •
Sign up for a trial at sencha.com
npm login --registry=http://npm.sencha.com --scope=@extjs
© 2017 Sencha Inc. • CONFIDENTIAL •
Use Yeoman to create new apps
npm install –g yo @extjs/generator-ext-react
yo @extjs/ext-react
© 2017 Sencha Inc. • CONFIDENTIAL •
GitHub: sencha/extjs-reactor
packages/reactor-modern-boilerplate
packages/reactor-classic-boilerplate
© 2017 Sencha Inc. • CONFIDENTIAL •
Adding ExtReact to an Existing React App
• npm install --save @extjs/reactor @extjs/ext-react
• npm install --save-dev @extjs/reactor-webpack-plugin @extjs/reactor-babel-plugin
© 2017 Sencha Inc. • CONFIDENTIAL •
Adding Ext JS to an Existing React App
• npm install --save @extjs/reactor
• npm install --save-dev @extjs/reactor-webpack-plugin @extjs/reactor-babel-plugin
• Download and unzip Ext JS from sencha.com
© 2017 Sencha Inc. • CONFIDENTIAL •
Webpack
import ExtReactWebpackPlugin from '@extjs/reactor-webpack-plugin’
...
plugins: [
new ExtReactWebpackPlugin({
theme: 'theme-material'
}),
]
© 2017 Sencha Inc. • CONFIDENTIAL •
Webpack
import ExtReactWebpackPlugin from '@extjs/reactor-webpack-plugin’
...
plugins: [
new ExtReactWebpackPlugin({
theme: 'theme-material',
// not needed for ExtReact
sdk: '/path/to/extjs',
toolkit: 'modern'
packages: ['charts']
}),
]
© 2017 Sencha Inc. • CONFIDENTIAL •
Babel
.babelrc
{
"plugins": [
"@extjs/reactor-babel-plugin"
]
}
© 2017 Sencha Inc. • CONFIDENTIAL •
React App Launch
import React from ’react';
import App from './App'; // app components
import { launch } from '@extjs/reactor';
launch(<App/>); // replaces ReactDOM.render(<App/>, document.getElementById(‘root’))
© 2017 Sencha Inc. • CONFIDENTIAL •
Live Demos
© 2017 Sencha Inc. • CONFIDENTIAL •
Sencha Fiddle
https://fiddle.sencha.com/?extreact
© 2017 Sencha Inc. • CONFIDENTIAL •
Q&A
© 2017 Sencha Inc. • CONFIDENTIAL •
Thank You!

Más contenido relacionado

La actualidad más candente

Drupal 8 Services And Dependency Injection
Drupal 8 Services And Dependency InjectionDrupal 8 Services And Dependency Injection
Drupal 8 Services And Dependency InjectionPhilip Norton
 
Jquery Complete Presentation along with Javascript Basics
Jquery Complete Presentation along with Javascript BasicsJquery Complete Presentation along with Javascript Basics
Jquery Complete Presentation along with Javascript BasicsEPAM Systems
 
First Steps in Drupal Code Driven Development
First Steps in Drupal Code Driven DevelopmentFirst Steps in Drupal Code Driven Development
First Steps in Drupal Code Driven DevelopmentNuvole
 
AngularJS Directives
AngularJS DirectivesAngularJS Directives
AngularJS DirectivesEyal Vardi
 
Coder Presentation Szeged
Coder Presentation SzegedCoder Presentation Szeged
Coder Presentation SzegedDoug Green
 
Angular JS blog tutorial
Angular JS blog tutorialAngular JS blog tutorial
Angular JS blog tutorialClaude Tech
 
Single Page Web Applications with CoffeeScript, Backbone and Jasmine
Single Page Web Applications with CoffeeScript, Backbone and JasmineSingle Page Web Applications with CoffeeScript, Backbone and Jasmine
Single Page Web Applications with CoffeeScript, Backbone and JasminePaulo Ragonha
 
Getting Into Drupal 8 Configuration
Getting Into Drupal 8 ConfigurationGetting Into Drupal 8 Configuration
Getting Into Drupal 8 ConfigurationPhilip Norton
 
Intro to Angular.JS Directives
Intro to Angular.JS DirectivesIntro to Angular.JS Directives
Intro to Angular.JS DirectivesChristian Lilley
 
Build Amazing Add-ons for Atlassian JIRA and Confluence
Build Amazing Add-ons for Atlassian JIRA and ConfluenceBuild Amazing Add-ons for Atlassian JIRA and Confluence
Build Amazing Add-ons for Atlassian JIRA and ConfluenceK15t
 
Becoming A Drupal Master Builder
Becoming A Drupal Master BuilderBecoming A Drupal Master Builder
Becoming A Drupal Master BuilderPhilip Norton
 
Drupal 8, Where Did the Code Go? From Info Hook to Plugin
Drupal 8, Where Did the Code Go? From Info Hook to PluginDrupal 8, Where Did the Code Go? From Info Hook to Plugin
Drupal 8, Where Did the Code Go? From Info Hook to PluginAcquia
 
Oleksandr Tolstykh
Oleksandr TolstykhOleksandr Tolstykh
Oleksandr TolstykhCodeFest
 
Advanced Tips & Tricks for using Angular JS
Advanced Tips & Tricks for using Angular JSAdvanced Tips & Tricks for using Angular JS
Advanced Tips & Tricks for using Angular JSSimon Guest
 
Academy PRO: React native - navigation
Academy PRO: React native - navigationAcademy PRO: React native - navigation
Academy PRO: React native - navigationBinary Studio
 
Getting the Most Out of jQuery Widgets
Getting the Most Out of jQuery WidgetsGetting the Most Out of jQuery Widgets
Getting the Most Out of jQuery Widgetsvelveeta_512
 
Django Rest Framework and React and Redux, Oh My!
Django Rest Framework and React and Redux, Oh My!Django Rest Framework and React and Redux, Oh My!
Django Rest Framework and React and Redux, Oh My!Eric Palakovich Carr
 

La actualidad más candente (20)

Drupal 8 Services And Dependency Injection
Drupal 8 Services And Dependency InjectionDrupal 8 Services And Dependency Injection
Drupal 8 Services And Dependency Injection
 
Jquery Complete Presentation along with Javascript Basics
Jquery Complete Presentation along with Javascript BasicsJquery Complete Presentation along with Javascript Basics
Jquery Complete Presentation along with Javascript Basics
 
CodeIgniter 3.0
CodeIgniter 3.0CodeIgniter 3.0
CodeIgniter 3.0
 
AngularJS Basics with Example
AngularJS Basics with ExampleAngularJS Basics with Example
AngularJS Basics with Example
 
First Steps in Drupal Code Driven Development
First Steps in Drupal Code Driven DevelopmentFirst Steps in Drupal Code Driven Development
First Steps in Drupal Code Driven Development
 
AngularJS Directives
AngularJS DirectivesAngularJS Directives
AngularJS Directives
 
Coder Presentation Szeged
Coder Presentation SzegedCoder Presentation Szeged
Coder Presentation Szeged
 
Angular JS blog tutorial
Angular JS blog tutorialAngular JS blog tutorial
Angular JS blog tutorial
 
Single Page Web Applications with CoffeeScript, Backbone and Jasmine
Single Page Web Applications with CoffeeScript, Backbone and JasmineSingle Page Web Applications with CoffeeScript, Backbone and Jasmine
Single Page Web Applications with CoffeeScript, Backbone and Jasmine
 
Getting Into Drupal 8 Configuration
Getting Into Drupal 8 ConfigurationGetting Into Drupal 8 Configuration
Getting Into Drupal 8 Configuration
 
Intro to Angular.JS Directives
Intro to Angular.JS DirectivesIntro to Angular.JS Directives
Intro to Angular.JS Directives
 
Build Amazing Add-ons for Atlassian JIRA and Confluence
Build Amazing Add-ons for Atlassian JIRA and ConfluenceBuild Amazing Add-ons for Atlassian JIRA and Confluence
Build Amazing Add-ons for Atlassian JIRA and Confluence
 
Becoming A Drupal Master Builder
Becoming A Drupal Master BuilderBecoming A Drupal Master Builder
Becoming A Drupal Master Builder
 
Drupal 8, Where Did the Code Go? From Info Hook to Plugin
Drupal 8, Where Did the Code Go? From Info Hook to PluginDrupal 8, Where Did the Code Go? From Info Hook to Plugin
Drupal 8, Where Did the Code Go? From Info Hook to Plugin
 
Oleksandr Tolstykh
Oleksandr TolstykhOleksandr Tolstykh
Oleksandr Tolstykh
 
Django
DjangoDjango
Django
 
Advanced Tips & Tricks for using Angular JS
Advanced Tips & Tricks for using Angular JSAdvanced Tips & Tricks for using Angular JS
Advanced Tips & Tricks for using Angular JS
 
Academy PRO: React native - navigation
Academy PRO: React native - navigationAcademy PRO: React native - navigation
Academy PRO: React native - navigation
 
Getting the Most Out of jQuery Widgets
Getting the Most Out of jQuery WidgetsGetting the Most Out of jQuery Widgets
Getting the Most Out of jQuery Widgets
 
Django Rest Framework and React and Redux, Oh My!
Django Rest Framework and React and Redux, Oh My!Django Rest Framework and React and Redux, Oh My!
Django Rest Framework and React and Redux, Oh My!
 

Destacado

Sencha Roadshow 2017: BufferedStore Internals featuring eyeworkers interactiv...
Sencha Roadshow 2017: BufferedStore Internals featuring eyeworkers interactiv...Sencha Roadshow 2017: BufferedStore Internals featuring eyeworkers interactiv...
Sencha Roadshow 2017: BufferedStore Internals featuring eyeworkers interactiv...Sencha
 
Sencha Roadshow 2017: Mobile First or Desktop First
Sencha Roadshow 2017: Mobile First or Desktop FirstSencha Roadshow 2017: Mobile First or Desktop First
Sencha Roadshow 2017: Mobile First or Desktop FirstSencha
 
SenchaCon 2016: Improve Workflow Driven Applications with Ext JS Draw Package...
SenchaCon 2016: Improve Workflow Driven Applications with Ext JS Draw Package...SenchaCon 2016: Improve Workflow Driven Applications with Ext JS Draw Package...
SenchaCon 2016: Improve Workflow Driven Applications with Ext JS Draw Package...Sencha
 
Leveraging React and GraphQL to Create a Performant, Scalable Data Grid
Leveraging React and GraphQL to Create a Performant, Scalable Data GridLeveraging React and GraphQL to Create a Performant, Scalable Data Grid
Leveraging React and GraphQL to Create a Performant, Scalable Data GridSencha
 
Sencha Roadshow 2017: Sencha Best Practices: Coworkee App
Sencha Roadshow 2017: Sencha Best Practices: Coworkee App Sencha Roadshow 2017: Sencha Best Practices: Coworkee App
Sencha Roadshow 2017: Sencha Best Practices: Coworkee App Sencha
 
Building Ext JS Using HATEOAS - Jeff Stano
Building Ext JS Using HATEOAS - Jeff StanoBuilding Ext JS Using HATEOAS - Jeff Stano
Building Ext JS Using HATEOAS - Jeff StanoSencha
 
Sencha Roadshow 2017: Innovations in Ext JS 6.5 and Beyond
Sencha Roadshow 2017: Innovations in Ext JS 6.5 and BeyondSencha Roadshow 2017: Innovations in Ext JS 6.5 and Beyond
Sencha Roadshow 2017: Innovations in Ext JS 6.5 and BeyondSencha
 
Sencha Roadshow 2017: Sencha Upgrades - The Good. The Bad. The Ugly - Eva Luc...
Sencha Roadshow 2017: Sencha Upgrades - The Good. The Bad. The Ugly - Eva Luc...Sencha Roadshow 2017: Sencha Upgrades - The Good. The Bad. The Ugly - Eva Luc...
Sencha Roadshow 2017: Sencha Upgrades - The Good. The Bad. The Ugly - Eva Luc...Sencha
 
SenchaCon 2016: Expect the Unexpected - Dealing with Errors in Web Apps
SenchaCon 2016: Expect the Unexpected - Dealing with Errors in Web AppsSenchaCon 2016: Expect the Unexpected - Dealing with Errors in Web Apps
SenchaCon 2016: Expect the Unexpected - Dealing with Errors in Web AppsSencha
 
SenchaCon 2016: Add Magic to Your Ext JS Apps with D3 Visualizations - Vitaly...
SenchaCon 2016: Add Magic to Your Ext JS Apps with D3 Visualizations - Vitaly...SenchaCon 2016: Add Magic to Your Ext JS Apps with D3 Visualizations - Vitaly...
SenchaCon 2016: Add Magic to Your Ext JS Apps with D3 Visualizations - Vitaly...Sencha
 
SenchaCon 2016: LinkRest - Modern RESTful API Framework for Ext JS Apps - Rou...
SenchaCon 2016: LinkRest - Modern RESTful API Framework for Ext JS Apps - Rou...SenchaCon 2016: LinkRest - Modern RESTful API Framework for Ext JS Apps - Rou...
SenchaCon 2016: LinkRest - Modern RESTful API Framework for Ext JS Apps - Rou...Sencha
 
Learn Key Insights from The State of Web Application Testing Research Report
Learn Key Insights from The State of Web Application Testing Research ReportLearn Key Insights from The State of Web Application Testing Research Report
Learn Key Insights from The State of Web Application Testing Research ReportSencha
 
Sencha Roadshow 2017: Best Practices for Implementing Continuous Web App Testing
Sencha Roadshow 2017: Best Practices for Implementing Continuous Web App TestingSencha Roadshow 2017: Best Practices for Implementing Continuous Web App Testing
Sencha Roadshow 2017: Best Practices for Implementing Continuous Web App TestingSencha
 
Sencha Roadshow 2017: Build Progressive Web Apps with Ext JS and Cmd
Sencha Roadshow 2017: Build Progressive Web Apps with Ext JS and Cmd Sencha Roadshow 2017: Build Progressive Web Apps with Ext JS and Cmd
Sencha Roadshow 2017: Build Progressive Web Apps with Ext JS and Cmd Sencha
 
SenchaCon 2016: Mobile First? Desktop First? Or Should you Think Universal Ap...
SenchaCon 2016: Mobile First? Desktop First? Or Should you Think Universal Ap...SenchaCon 2016: Mobile First? Desktop First? Or Should you Think Universal Ap...
SenchaCon 2016: Mobile First? Desktop First? Or Should you Think Universal Ap...Sencha
 
Sencha Roadshow 2017: What's New in Sencha Test
Sencha Roadshow 2017: What's New in Sencha TestSencha Roadshow 2017: What's New in Sencha Test
Sencha Roadshow 2017: What's New in Sencha TestSencha
 

Destacado (16)

Sencha Roadshow 2017: BufferedStore Internals featuring eyeworkers interactiv...
Sencha Roadshow 2017: BufferedStore Internals featuring eyeworkers interactiv...Sencha Roadshow 2017: BufferedStore Internals featuring eyeworkers interactiv...
Sencha Roadshow 2017: BufferedStore Internals featuring eyeworkers interactiv...
 
Sencha Roadshow 2017: Mobile First or Desktop First
Sencha Roadshow 2017: Mobile First or Desktop FirstSencha Roadshow 2017: Mobile First or Desktop First
Sencha Roadshow 2017: Mobile First or Desktop First
 
SenchaCon 2016: Improve Workflow Driven Applications with Ext JS Draw Package...
SenchaCon 2016: Improve Workflow Driven Applications with Ext JS Draw Package...SenchaCon 2016: Improve Workflow Driven Applications with Ext JS Draw Package...
SenchaCon 2016: Improve Workflow Driven Applications with Ext JS Draw Package...
 
Leveraging React and GraphQL to Create a Performant, Scalable Data Grid
Leveraging React and GraphQL to Create a Performant, Scalable Data GridLeveraging React and GraphQL to Create a Performant, Scalable Data Grid
Leveraging React and GraphQL to Create a Performant, Scalable Data Grid
 
Sencha Roadshow 2017: Sencha Best Practices: Coworkee App
Sencha Roadshow 2017: Sencha Best Practices: Coworkee App Sencha Roadshow 2017: Sencha Best Practices: Coworkee App
Sencha Roadshow 2017: Sencha Best Practices: Coworkee App
 
Building Ext JS Using HATEOAS - Jeff Stano
Building Ext JS Using HATEOAS - Jeff StanoBuilding Ext JS Using HATEOAS - Jeff Stano
Building Ext JS Using HATEOAS - Jeff Stano
 
Sencha Roadshow 2017: Innovations in Ext JS 6.5 and Beyond
Sencha Roadshow 2017: Innovations in Ext JS 6.5 and BeyondSencha Roadshow 2017: Innovations in Ext JS 6.5 and Beyond
Sencha Roadshow 2017: Innovations in Ext JS 6.5 and Beyond
 
Sencha Roadshow 2017: Sencha Upgrades - The Good. The Bad. The Ugly - Eva Luc...
Sencha Roadshow 2017: Sencha Upgrades - The Good. The Bad. The Ugly - Eva Luc...Sencha Roadshow 2017: Sencha Upgrades - The Good. The Bad. The Ugly - Eva Luc...
Sencha Roadshow 2017: Sencha Upgrades - The Good. The Bad. The Ugly - Eva Luc...
 
SenchaCon 2016: Expect the Unexpected - Dealing with Errors in Web Apps
SenchaCon 2016: Expect the Unexpected - Dealing with Errors in Web AppsSenchaCon 2016: Expect the Unexpected - Dealing with Errors in Web Apps
SenchaCon 2016: Expect the Unexpected - Dealing with Errors in Web Apps
 
SenchaCon 2016: Add Magic to Your Ext JS Apps with D3 Visualizations - Vitaly...
SenchaCon 2016: Add Magic to Your Ext JS Apps with D3 Visualizations - Vitaly...SenchaCon 2016: Add Magic to Your Ext JS Apps with D3 Visualizations - Vitaly...
SenchaCon 2016: Add Magic to Your Ext JS Apps with D3 Visualizations - Vitaly...
 
SenchaCon 2016: LinkRest - Modern RESTful API Framework for Ext JS Apps - Rou...
SenchaCon 2016: LinkRest - Modern RESTful API Framework for Ext JS Apps - Rou...SenchaCon 2016: LinkRest - Modern RESTful API Framework for Ext JS Apps - Rou...
SenchaCon 2016: LinkRest - Modern RESTful API Framework for Ext JS Apps - Rou...
 
Learn Key Insights from The State of Web Application Testing Research Report
Learn Key Insights from The State of Web Application Testing Research ReportLearn Key Insights from The State of Web Application Testing Research Report
Learn Key Insights from The State of Web Application Testing Research Report
 
Sencha Roadshow 2017: Best Practices for Implementing Continuous Web App Testing
Sencha Roadshow 2017: Best Practices for Implementing Continuous Web App TestingSencha Roadshow 2017: Best Practices for Implementing Continuous Web App Testing
Sencha Roadshow 2017: Best Practices for Implementing Continuous Web App Testing
 
Sencha Roadshow 2017: Build Progressive Web Apps with Ext JS and Cmd
Sencha Roadshow 2017: Build Progressive Web Apps with Ext JS and Cmd Sencha Roadshow 2017: Build Progressive Web Apps with Ext JS and Cmd
Sencha Roadshow 2017: Build Progressive Web Apps with Ext JS and Cmd
 
SenchaCon 2016: Mobile First? Desktop First? Or Should you Think Universal Ap...
SenchaCon 2016: Mobile First? Desktop First? Or Should you Think Universal Ap...SenchaCon 2016: Mobile First? Desktop First? Or Should you Think Universal Ap...
SenchaCon 2016: Mobile First? Desktop First? Or Should you Think Universal Ap...
 
Sencha Roadshow 2017: What's New in Sencha Test
Sencha Roadshow 2017: What's New in Sencha TestSencha Roadshow 2017: What's New in Sencha Test
Sencha Roadshow 2017: What's New in Sencha Test
 

Similar a Introducing ExtReact: Adding Powerful Sencha Components to React Apps

Introduction to Spring Boot.pdf
Introduction to Spring Boot.pdfIntroduction to Spring Boot.pdf
Introduction to Spring Boot.pdfShaiAlmog1
 
ReactJS Tutorial For Beginners | ReactJS Redux Training For Beginners | React...
ReactJS Tutorial For Beginners | ReactJS Redux Training For Beginners | React...ReactJS Tutorial For Beginners | ReactJS Redux Training For Beginners | React...
ReactJS Tutorial For Beginners | ReactJS Redux Training For Beginners | React...Edureka!
 
React native app with type script tutorial
React native app with type script tutorialReact native app with type script tutorial
React native app with type script tutorialKaty Slemon
 
Developing components and extensions for ext js
Developing components and extensions for ext jsDeveloping components and extensions for ext js
Developing components and extensions for ext jsMats Bryntse
 
Kicking off with Zend Expressive and Doctrine ORM (PHP Srbija 2017)
Kicking off with Zend Expressive and Doctrine ORM (PHP Srbija 2017)Kicking off with Zend Expressive and Doctrine ORM (PHP Srbija 2017)
Kicking off with Zend Expressive and Doctrine ORM (PHP Srbija 2017)James Titcumb
 
Паразитируем на React-экосистеме (Angular 4+) / Алексей Охрименко (IPONWEB)
Паразитируем на React-экосистеме (Angular 4+) / Алексей Охрименко (IPONWEB)Паразитируем на React-экосистеме (Angular 4+) / Алексей Охрименко (IPONWEB)
Паразитируем на React-экосистеме (Angular 4+) / Алексей Охрименко (IPONWEB)Ontico
 
Building Content Recommendation Systems Using Apache MXNet and Gluon - MCL402...
Building Content Recommendation Systems Using Apache MXNet and Gluon - MCL402...Building Content Recommendation Systems Using Apache MXNet and Gluon - MCL402...
Building Content Recommendation Systems Using Apache MXNet and Gluon - MCL402...Amazon Web Services
 
Stencil the time for vanilla web components has arrived
Stencil the time for vanilla web components has arrivedStencil the time for vanilla web components has arrived
Stencil the time for vanilla web components has arrivedGil Fink
 
Stencil: The Time for Vanilla Web Components has Arrived
Stencil: The Time for Vanilla Web Components has ArrivedStencil: The Time for Vanilla Web Components has Arrived
Stencil: The Time for Vanilla Web Components has ArrivedGil Fink
 
Kicking off with Zend Expressive and Doctrine ORM (PHP UK 2017)
Kicking off with Zend Expressive and Doctrine ORM (PHP UK 2017)Kicking off with Zend Expressive and Doctrine ORM (PHP UK 2017)
Kicking off with Zend Expressive and Doctrine ORM (PHP UK 2017)James Titcumb
 
Kicking off with Zend Expressive and Doctrine ORM (Sunshine PHP 2017)
Kicking off with Zend Expressive and Doctrine ORM (Sunshine PHP 2017)Kicking off with Zend Expressive and Doctrine ORM (Sunshine PHP 2017)
Kicking off with Zend Expressive and Doctrine ORM (Sunshine PHP 2017)James Titcumb
 
Dive Into Azure Data Lake - PASS 2017
Dive Into Azure Data Lake - PASS 2017Dive Into Azure Data Lake - PASS 2017
Dive Into Azure Data Lake - PASS 2017Ike Ellis
 
reactjs-quiz..docs.pdf
reactjs-quiz..docs.pdfreactjs-quiz..docs.pdf
reactjs-quiz..docs.pdfAyanSarkar78
 
SenchaCon 2016: Building a Faceted Catalog of Video Game Assets Using Ext JS ...
SenchaCon 2016: Building a Faceted Catalog of Video Game Assets Using Ext JS ...SenchaCon 2016: Building a Faceted Catalog of Video Game Assets Using Ext JS ...
SenchaCon 2016: Building a Faceted Catalog of Video Game Assets Using Ext JS ...Sencha
 
React mit TypeScript – eine glückliche Ehe
React mit TypeScript – eine glückliche EheReact mit TypeScript – eine glückliche Ehe
React mit TypeScript – eine glückliche Eheinovex GmbH
 
Kite SDK: Working with Datasets
Kite SDK: Working with DatasetsKite SDK: Working with Datasets
Kite SDK: Working with DatasetsCloudera, Inc.
 
Ejb3 Struts Tutorial En
Ejb3 Struts Tutorial EnEjb3 Struts Tutorial En
Ejb3 Struts Tutorial EnAnkur Dongre
 
Ejb3 Struts Tutorial En
Ejb3 Struts Tutorial EnEjb3 Struts Tutorial En
Ejb3 Struts Tutorial EnAnkur Dongre
 
Automating Performance Monitoring at Microsoft
Automating Performance Monitoring at MicrosoftAutomating Performance Monitoring at Microsoft
Automating Performance Monitoring at MicrosoftThousandEyes
 

Similar a Introducing ExtReact: Adding Powerful Sencha Components to React Apps (20)

Introduction to Spring Boot.pdf
Introduction to Spring Boot.pdfIntroduction to Spring Boot.pdf
Introduction to Spring Boot.pdf
 
ReactJS Tutorial For Beginners | ReactJS Redux Training For Beginners | React...
ReactJS Tutorial For Beginners | ReactJS Redux Training For Beginners | React...ReactJS Tutorial For Beginners | ReactJS Redux Training For Beginners | React...
ReactJS Tutorial For Beginners | ReactJS Redux Training For Beginners | React...
 
React native app with type script tutorial
React native app with type script tutorialReact native app with type script tutorial
React native app with type script tutorial
 
Developing components and extensions for ext js
Developing components and extensions for ext jsDeveloping components and extensions for ext js
Developing components and extensions for ext js
 
Kicking off with Zend Expressive and Doctrine ORM (PHP Srbija 2017)
Kicking off with Zend Expressive and Doctrine ORM (PHP Srbija 2017)Kicking off with Zend Expressive and Doctrine ORM (PHP Srbija 2017)
Kicking off with Zend Expressive and Doctrine ORM (PHP Srbija 2017)
 
Паразитируем на React-экосистеме (Angular 4+) / Алексей Охрименко (IPONWEB)
Паразитируем на React-экосистеме (Angular 4+) / Алексей Охрименко (IPONWEB)Паразитируем на React-экосистеме (Angular 4+) / Алексей Охрименко (IPONWEB)
Паразитируем на React-экосистеме (Angular 4+) / Алексей Охрименко (IPONWEB)
 
Building Content Recommendation Systems Using Apache MXNet and Gluon - MCL402...
Building Content Recommendation Systems Using Apache MXNet and Gluon - MCL402...Building Content Recommendation Systems Using Apache MXNet and Gluon - MCL402...
Building Content Recommendation Systems Using Apache MXNet and Gluon - MCL402...
 
Stencil the time for vanilla web components has arrived
Stencil the time for vanilla web components has arrivedStencil the time for vanilla web components has arrived
Stencil the time for vanilla web components has arrived
 
Stencil: The Time for Vanilla Web Components has Arrived
Stencil: The Time for Vanilla Web Components has ArrivedStencil: The Time for Vanilla Web Components has Arrived
Stencil: The Time for Vanilla Web Components has Arrived
 
Kicking off with Zend Expressive and Doctrine ORM (PHP UK 2017)
Kicking off with Zend Expressive and Doctrine ORM (PHP UK 2017)Kicking off with Zend Expressive and Doctrine ORM (PHP UK 2017)
Kicking off with Zend Expressive and Doctrine ORM (PHP UK 2017)
 
Kicking off with Zend Expressive and Doctrine ORM (Sunshine PHP 2017)
Kicking off with Zend Expressive and Doctrine ORM (Sunshine PHP 2017)Kicking off with Zend Expressive and Doctrine ORM (Sunshine PHP 2017)
Kicking off with Zend Expressive and Doctrine ORM (Sunshine PHP 2017)
 
Dive Into Azure Data Lake - PASS 2017
Dive Into Azure Data Lake - PASS 2017Dive Into Azure Data Lake - PASS 2017
Dive Into Azure Data Lake - PASS 2017
 
reactjs-quiz..docs.pdf
reactjs-quiz..docs.pdfreactjs-quiz..docs.pdf
reactjs-quiz..docs.pdf
 
SenchaCon 2016: Building a Faceted Catalog of Video Game Assets Using Ext JS ...
SenchaCon 2016: Building a Faceted Catalog of Video Game Assets Using Ext JS ...SenchaCon 2016: Building a Faceted Catalog of Video Game Assets Using Ext JS ...
SenchaCon 2016: Building a Faceted Catalog of Video Game Assets Using Ext JS ...
 
React mit TypeScript – eine glückliche Ehe
React mit TypeScript – eine glückliche EheReact mit TypeScript – eine glückliche Ehe
React mit TypeScript – eine glückliche Ehe
 
Real World MVC
Real World MVCReal World MVC
Real World MVC
 
Kite SDK: Working with Datasets
Kite SDK: Working with DatasetsKite SDK: Working with Datasets
Kite SDK: Working with Datasets
 
Ejb3 Struts Tutorial En
Ejb3 Struts Tutorial EnEjb3 Struts Tutorial En
Ejb3 Struts Tutorial En
 
Ejb3 Struts Tutorial En
Ejb3 Struts Tutorial EnEjb3 Struts Tutorial En
Ejb3 Struts Tutorial En
 
Automating Performance Monitoring at Microsoft
Automating Performance Monitoring at MicrosoftAutomating Performance Monitoring at Microsoft
Automating Performance Monitoring at Microsoft
 

Más de Sencha

Breathe New Life into Your Existing JavaScript Applications with Web Components
Breathe New Life into Your Existing JavaScript Applications with Web ComponentsBreathe New Life into Your Existing JavaScript Applications with Web Components
Breathe New Life into Your Existing JavaScript Applications with Web ComponentsSencha
 
Ext JS 6.6 Highlights
Ext JS 6.6 HighlightsExt JS 6.6 Highlights
Ext JS 6.6 HighlightsSencha
 
SenchaCon 2016: Developing and Delivering Quality Code, Frequently - Neil Manvar
SenchaCon 2016: Developing and Delivering Quality Code, Frequently - Neil ManvarSenchaCon 2016: Developing and Delivering Quality Code, Frequently - Neil Manvar
SenchaCon 2016: Developing and Delivering Quality Code, Frequently - Neil ManvarSencha
 
SenchaCon 2016: Creating a Flexible and Usable Industry Specific Solution - D...
SenchaCon 2016: Creating a Flexible and Usable Industry Specific Solution - D...SenchaCon 2016: Creating a Flexible and Usable Industry Specific Solution - D...
SenchaCon 2016: Creating a Flexible and Usable Industry Specific Solution - D...Sencha
 
SenchaCon 2016: JavaScript is Great but Stop Writing It - Rory Hardy
SenchaCon 2016: JavaScript is Great but Stop Writing It - Rory HardySenchaCon 2016: JavaScript is Great but Stop Writing It - Rory Hardy
SenchaCon 2016: JavaScript is Great but Stop Writing It - Rory HardySencha
 
SenchaCon 2016: Accessibility, Teamwork & Ext JS: A Customer Success Story - ...
SenchaCon 2016: Accessibility, Teamwork & Ext JS: A Customer Success Story - ...SenchaCon 2016: Accessibility, Teamwork & Ext JS: A Customer Success Story - ...
SenchaCon 2016: Accessibility, Teamwork & Ext JS: A Customer Success Story - ...Sencha
 
SenchaCon 2016: Using Ext JS 6 for Cross-Platform Development on Mobile - And...
SenchaCon 2016: Using Ext JS 6 for Cross-Platform Development on Mobile - And...SenchaCon 2016: Using Ext JS 6 for Cross-Platform Development on Mobile - And...
SenchaCon 2016: Using Ext JS 6 for Cross-Platform Development on Mobile - And...Sencha
 
SenchaCon 2016: Handling Undo-Redo in Sencha Applications - Nickolay Platonov
SenchaCon 2016: Handling Undo-Redo in Sencha Applications - Nickolay PlatonovSenchaCon 2016: Handling Undo-Redo in Sencha Applications - Nickolay Platonov
SenchaCon 2016: Handling Undo-Redo in Sencha Applications - Nickolay PlatonovSencha
 
SenchaCon 2016: Turbocharge your Ext JS App - Per Minborg, Anselm McClain, Jo...
SenchaCon 2016: Turbocharge your Ext JS App - Per Minborg, Anselm McClain, Jo...SenchaCon 2016: Turbocharge your Ext JS App - Per Minborg, Anselm McClain, Jo...
SenchaCon 2016: Turbocharge your Ext JS App - Per Minborg, Anselm McClain, Jo...Sencha
 
SenchaCon 2016: Integrating Geospatial Maps & Big Data Using CartoDB via Ext ...
SenchaCon 2016: Integrating Geospatial Maps & Big Data Using CartoDB via Ext ...SenchaCon 2016: Integrating Geospatial Maps & Big Data Using CartoDB via Ext ...
SenchaCon 2016: Integrating Geospatial Maps & Big Data Using CartoDB via Ext ...Sencha
 

Más de Sencha (10)

Breathe New Life into Your Existing JavaScript Applications with Web Components
Breathe New Life into Your Existing JavaScript Applications with Web ComponentsBreathe New Life into Your Existing JavaScript Applications with Web Components
Breathe New Life into Your Existing JavaScript Applications with Web Components
 
Ext JS 6.6 Highlights
Ext JS 6.6 HighlightsExt JS 6.6 Highlights
Ext JS 6.6 Highlights
 
SenchaCon 2016: Developing and Delivering Quality Code, Frequently - Neil Manvar
SenchaCon 2016: Developing and Delivering Quality Code, Frequently - Neil ManvarSenchaCon 2016: Developing and Delivering Quality Code, Frequently - Neil Manvar
SenchaCon 2016: Developing and Delivering Quality Code, Frequently - Neil Manvar
 
SenchaCon 2016: Creating a Flexible and Usable Industry Specific Solution - D...
SenchaCon 2016: Creating a Flexible and Usable Industry Specific Solution - D...SenchaCon 2016: Creating a Flexible and Usable Industry Specific Solution - D...
SenchaCon 2016: Creating a Flexible and Usable Industry Specific Solution - D...
 
SenchaCon 2016: JavaScript is Great but Stop Writing It - Rory Hardy
SenchaCon 2016: JavaScript is Great but Stop Writing It - Rory HardySenchaCon 2016: JavaScript is Great but Stop Writing It - Rory Hardy
SenchaCon 2016: JavaScript is Great but Stop Writing It - Rory Hardy
 
SenchaCon 2016: Accessibility, Teamwork & Ext JS: A Customer Success Story - ...
SenchaCon 2016: Accessibility, Teamwork & Ext JS: A Customer Success Story - ...SenchaCon 2016: Accessibility, Teamwork & Ext JS: A Customer Success Story - ...
SenchaCon 2016: Accessibility, Teamwork & Ext JS: A Customer Success Story - ...
 
SenchaCon 2016: Using Ext JS 6 for Cross-Platform Development on Mobile - And...
SenchaCon 2016: Using Ext JS 6 for Cross-Platform Development on Mobile - And...SenchaCon 2016: Using Ext JS 6 for Cross-Platform Development on Mobile - And...
SenchaCon 2016: Using Ext JS 6 for Cross-Platform Development on Mobile - And...
 
SenchaCon 2016: Handling Undo-Redo in Sencha Applications - Nickolay Platonov
SenchaCon 2016: Handling Undo-Redo in Sencha Applications - Nickolay PlatonovSenchaCon 2016: Handling Undo-Redo in Sencha Applications - Nickolay Platonov
SenchaCon 2016: Handling Undo-Redo in Sencha Applications - Nickolay Platonov
 
SenchaCon 2016: Turbocharge your Ext JS App - Per Minborg, Anselm McClain, Jo...
SenchaCon 2016: Turbocharge your Ext JS App - Per Minborg, Anselm McClain, Jo...SenchaCon 2016: Turbocharge your Ext JS App - Per Minborg, Anselm McClain, Jo...
SenchaCon 2016: Turbocharge your Ext JS App - Per Minborg, Anselm McClain, Jo...
 
SenchaCon 2016: Integrating Geospatial Maps & Big Data Using CartoDB via Ext ...
SenchaCon 2016: Integrating Geospatial Maps & Big Data Using CartoDB via Ext ...SenchaCon 2016: Integrating Geospatial Maps & Big Data Using CartoDB via Ext ...
SenchaCon 2016: Integrating Geospatial Maps & Big Data Using CartoDB via Ext ...
 

Último

Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 

Último (20)

Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 

Introducing ExtReact: Adding Powerful Sencha Components to React Apps

  • 1. © 2017 Sencha Inc. • CONFIDENTIAL • Introducing ExtReact:Adding Powerful Sencha Components to ReactApps Mark Brocato Engineering Director, Sencha @mockaroodev
  • 2. © 2017 Sencha Inc. • CONFIDENTIAL • Ext JS Ext JS Components Ext JS Framework
  • 3. © 2017 Sencha Inc. • CONFIDENTIAL • React: A Component Framework w/o Components Ext JS Components Ext JS Framework ExtReact React.js
  • 4. © 2017 Sencha Inc. • CONFIDENTIAL • ExtReact Use All Ext JS Components in React
  • 5. © 2017 Sencha Inc. • CONFIDENTIAL • Motivation for ExtReact • No complete component libraries available for React • Dependency fatigue • Form without function • Head start • Data-driven, enterprise apps
  • 6. © 2017 Sencha Inc. • CONFIDENTIAL • ExtReact: 100+ Components • Grid • List • Tree • Calendar • Layouts • Form Fields • Animations • Charts • D3 Visualizations
  • 7. © 2017 Sencha Inc. • CONFIDENTIAL • @extjs/reactor GitHub: extjs-reactor
  • 8. © 2017 Sencha Inc. • CONFIDENTIAL • ExtReact vs Ext JS + React ExtReact • Separate license from Ext JS (annual subscription, perpetual distribution rights) • Streamlined installation (NPM) • Modern toolkit only (Ext JS 6.5) Ext JS + Reactor • Use your existing Ext JS license • Traditional Ext JS installation process • Modern + Classic toolkits
  • 9. © 2017 Sencha Inc. • CONFIDENTIAL • ExtReact Grid <Grid title="Stock Prices" store={this.store}> <Column text="Company" dataIndex="name"/> <Column text="Price" dataIndex="price" formatter='usMoney'/> <Column text="Change" dataIndex="priceChange"/> <Column text="% Change" dataIndex="priceChangePct"/> <Column text="Last Updated" dataIndex="lastChange" formatter='date("m/d/Y")'/> </Grid>
  • 10. © 2017 Sencha Inc. • CONFIDENTIAL • ExtReact for Ext JS Developers
  • 11. © 2017 Sencha Inc. • CONFIDENTIAL • Ext.create({ xtype: 'list', store: contacts, grouped: true }); Ext JS ExtReact
  • 12. © 2017 Sencha Inc. • CONFIDENTIAL • Ext.create({ xtype: 'list', store: contacts, grouped: true }); import { List } from '@extjs/ext-react'; <List store={contacts} grouped /> Ext JS ExtReact
  • 13. © 2017 Sencha Inc. • CONFIDENTIAL • Ext.create({ xtype: 'list', store: contacts, grouped: true, listeners: { itemtap: function(list, index, target, record) { console.log(`Tapped ${record.get('name')}`) } } }); import { List } from '@extjs/ext-react'; <List store={contacts} grouped /> Ext JS ExtReact
  • 14. © 2017 Sencha Inc. • CONFIDENTIAL • Ext.create({ xtype: 'list', store: contacts, grouped: true, listeners: { itemtap: function(list, index, target, record) { console.log(`Tapped ${record.get('name')}`) } } }); import { List } from '@extjs/ext-react'; <List store={contacts} grouped onItemTap={(list, index, target, record) => { console.log(`Tapped ${record.get('name')}`) }} /> Ext JS ExtReact
  • 15. © 2017 Sencha Inc. • CONFIDENTIAL • Ext.create({ xtype: 'list', store: contacts, grouped: true, listeners: { itemtap: function(list, index, target, record) { console.log(`Tapped ${record.get('name')}`) }, show: { single: true, fn: function() { // load store } } } }); import { List } from '@extjs/ext-react'; <List store={contacts} grouped onItemTap={(list, index, target, record) => { console.log(`Tapped ${record.get('name')}`) }} /> Ext JS ExtReact
  • 16. © 2017 Sencha Inc. • CONFIDENTIAL • Ext.create({ xtype: 'list', store: contacts, grouped: true, listeners: { itemtap: function(list, index, target, record) { console.log(`Tapped ${record.get('name')}`) }, show: { single: true, fn: function() { // load store } } } }); import { List } from '@extjs/ext-react'; <List store={contacts} grouped onItemTap={(list, index, target, record) => { console.log(`Tapped ${record.get('name')}`) }} onShow={{ single: true, fn: () => { // load store } }} /> Ext JS ExtReact
  • 17. © 2017 Sencha Inc. • CONFIDENTIAL • Ext.create({ xtype: 'list', store: contacts, grouped: true, listeners: { itemtap: function(list, index, target, record) { console.log(`Tapped ${record.get('name')}`) }, show: { single: true, fn: function() { // load store } } }, itemTpl: ( '<div>' + '<div>{firstName} {lastName}</div>' + '<div>{title}</div>' + '</div>' ) }); import { List } from '@extjs/ext-react'; <List store={contacts} grouped onItemTap={(list, index, target, record) => { console.log(`Tapped ${record.get('name')}`) }} onShow={{ single: true, fn: () => { // load store } }} /> Ext JS ExtReact
  • 18. © 2017 Sencha Inc. • CONFIDENTIAL • Ext.create({ xtype: 'list', store: contacts, grouped: true, listeners: { itemtap: function(list, index, target, record) { console.log(`Tapped ${record.get('name')}`) }, show: { single: true, fn: function() { // load store } } }, itemTpl: ( '<div>' + '<div>{firstName} {lastName}</div>' + '<div>{title}</div>' + '</div>' ) }); import { List } from '@extjs/ext-react'; <List store={contacts} grouped onItemTap={(list, index, target, record) => { console.log(`Tapped ${record.get('name')}`) }} onShow={{ single: true, fn: () => { // load store } }} itemTpl={data => ( <div> <div>{data.firstName} {data.lastName}</div> <div>{data.title}</div> </div> )} /> Ext JS ExtReact
  • 19. © 2017 Sencha Inc. • CONFIDENTIAL • Ext.create({ xtype: 'list', store: contacts, grouped: true, listeners: { ... }, itemTpl: ( '<div>' + '<div>{firstName} {lastName}</div>' + '<div>{title}</div>' + '</div>' ) items: [{ xtype: 'toolbar', docked: 'top' items: [{ xtype: 'button', text: 'Refresh' }] }] }); import { List } from '@extjs/ext-react'; <List store={contacts} grouped onItemTap={(list, index, target, record) => { console.log(`Tapped ${record.get('name')}`) }} onShow={{ single: true, fn: () => { // load store } }} itemTpl={data => ( <div> <div>{data.firstName} {data.lastName}</div> <div>{data.title}</div> </div> )} /> Ext JS ExtReact
  • 20. © 2017 Sencha Inc. • CONFIDENTIAL • Ext.create({ xtype: 'list', store: contacts, grouped: true, listeners: { ... }, itemTpl: ( '<div>' + '<div>{firstName} {lastName}</div>' + '<div>{title}</div>' + '</div>' ) items: [{ xtype: 'toolbar', docked: 'top' items: [{ xtype: 'button', text: 'Refresh' }] }] }); 20 import { List, Toolbar, Button } from '@extjs/ext-react'; <List store={contacts} grouped ... itemTpl={data => ( <div> <div>{firstName} {lastName}</div> <div>{title}</div> </div> )} > <Toolbar> <Button text="Refresh" /> </Toolbar> </List> Ext JS ExtReact
  • 21. © 2017 Sencha Inc. • CONFIDENTIAL • ExtReact Components are Themable • Each can be extended using SASS or Sencha Themer Triton Material iOS
  • 22. © 2017 Sencha Inc. • CONFIDENTIAL • Sencha Themer 22
  • 23. © 2017 Sencha Inc. • CONFIDENTIAL • FAQ • Controllers • ViewModels How much of the Ext JS framework will I use? Components Stores Models Grid, Tree, Calendar, etc… Flux (Redux, MobX, et al...)
  • 24. © 2017 Sencha Inc. • CONFIDENTIAL • Components Virtual DOM DOMExtReact? Ext JS FAQ Does ExtReact use the Virtual DOM?
  • 25. © 2017 Sencha Inc. • CONFIDENTIAL • FAQ Can I reuse components from pure Ext JS apps? import { reactify } from '@extjs/reactor'; const MyCustomComponent = reactify(MyPackage.MyCustomComponent); ... render() { return <MyCustomComponent ... /> }
  • 26. © 2017 Sencha Inc. • CONFIDENTIAL • ExtReact: Getting Set Up
  • 27. © 2017 Sencha Inc. • CONFIDENTIAL • Sign up for a trial at sencha.com npm login --registry=http://npm.sencha.com --scope=@extjs
  • 28. © 2017 Sencha Inc. • CONFIDENTIAL • Use Yeoman to create new apps npm install –g yo @extjs/generator-ext-react yo @extjs/ext-react
  • 29. © 2017 Sencha Inc. • CONFIDENTIAL • GitHub: sencha/extjs-reactor packages/reactor-modern-boilerplate packages/reactor-classic-boilerplate
  • 30. © 2017 Sencha Inc. • CONFIDENTIAL • Adding ExtReact to an Existing React App • npm install --save @extjs/reactor @extjs/ext-react • npm install --save-dev @extjs/reactor-webpack-plugin @extjs/reactor-babel-plugin
  • 31. © 2017 Sencha Inc. • CONFIDENTIAL • Adding Ext JS to an Existing React App • npm install --save @extjs/reactor • npm install --save-dev @extjs/reactor-webpack-plugin @extjs/reactor-babel-plugin • Download and unzip Ext JS from sencha.com
  • 32. © 2017 Sencha Inc. • CONFIDENTIAL • Webpack import ExtReactWebpackPlugin from '@extjs/reactor-webpack-plugin’ ... plugins: [ new ExtReactWebpackPlugin({ theme: 'theme-material' }), ]
  • 33. © 2017 Sencha Inc. • CONFIDENTIAL • Webpack import ExtReactWebpackPlugin from '@extjs/reactor-webpack-plugin’ ... plugins: [ new ExtReactWebpackPlugin({ theme: 'theme-material', // not needed for ExtReact sdk: '/path/to/extjs', toolkit: 'modern' packages: ['charts'] }), ]
  • 34. © 2017 Sencha Inc. • CONFIDENTIAL • Babel .babelrc { "plugins": [ "@extjs/reactor-babel-plugin" ] }
  • 35. © 2017 Sencha Inc. • CONFIDENTIAL • React App Launch import React from ’react'; import App from './App'; // app components import { launch } from '@extjs/reactor'; launch(<App/>); // replaces ReactDOM.render(<App/>, document.getElementById(‘root’))
  • 36. © 2017 Sencha Inc. • CONFIDENTIAL • Live Demos
  • 37. © 2017 Sencha Inc. • CONFIDENTIAL • Sencha Fiddle https://fiddle.sencha.com/?extreact
  • 38. © 2017 Sencha Inc. • CONFIDENTIAL • Q&A
  • 39. © 2017 Sencha Inc. • CONFIDENTIAL • Thank You!