SlideShare a Scribd company logo
Leonso 1
8th Sutol Conference, November 2016
React.js – High-Performance
Client for Domino
Knut Herrmann
Leonso 2
Thanks to our sponsors!
Leonso 3
8th Sutol Conference, November 2016
Knut Herrmann
• Senior Software Architect
Leonso GmbH
• Notes Domino developer since version 2
• Web application developer
• StackOverflow contributor
E-Mail: knut.herrmann@leonso.de
Twitter: @KnutHerrmann
Skype: knut.herrmann
Leonso 4
8th Sutol Conference, November 2016
Why React?
Leonso 5
8th Sutol Conference, November 2016
Domino
Server
Notes
Client
Code
Data
Leonso 6
8th Sutol Conference, November 2016
Domino
Server
XPages
Browser
Dojo
Data
HTML
JS
Leonso 7
8th Sutol Conference, November 2016
Domino
Server
XPages
Browser
Dojo
Data
HTML
JS
Java
Leonso 8
8th Sutol Conference, November 2016
Domino
Server
XPages
Browser
Dojo
Data
HTML
JS
Java
jQueryjqGrid
Select2 Bootstrap
Leonso 9
8th Sutol Conference, November 2016
Domino
Server
XPages
Browser
Java
?
Code
Data
Database JSON UI
Wanted:
Leonso 10
8th Sutol Conference, November 2016
Angular ?
Leonso 11
8th Sutol Conference, November 2016
React !
Leonso 12
8th Sutol Conference, November 2016
React
high performance
reusable components
declarative readable code
developed by Facebook
Leonso 13
8th Sutol Conference, November 2016
GitHub Star Ranking
2013 May - first commit
2014 December - #33
2016 November - #5
Leonso 14
8th Sutol Conference, November 2016
Websites built with React
Leonso 15
8th Sutol Conference, November 2016
What is React?
Leonso 16
8th Sutol Conference, November 2016
React
JavaScript library – not a framework
renders HTML on client side
virtual DOM
One-way data flow
Leonso 17
8th Sutol Conference, November 2016
virtual DOM
Leonso 18
8th Sutol Conference, November 2016
virtual DOM
Leonso 19
8th Sutol Conference, November 2016
Component
component
state – internal data
render() – returns elements to render and event handling
lifecycle functions – mounting, changes, unmounting
props – data and functions as parameter
child componentscomponent component …
component component …
Leonso 20
8th Sutol Conference, November 2016
Example
import React from 'react';
import ReactDOM from 'react-dom';
class App extends Component {
render() {
return (
<div>
<h1>{this.props.headline}</h1>
<Person name="Kurt Meier" />
<Person name="Hans Schulze" />
</div>
);
}
}
ReactDOM.render(<App headline="List of Attendees"/>,
document.getElementById('root'));
class Person extends Component {
render() {
return (
<div>
<h3>{this.props.name}</h3>
</div>
);
}
}
Leonso 21
8th Sutol Conference, November 2016
Example
class App extends Component {
render() {
return (
<div>
<h1>{this.props.headline}</h1>
<Person name="Kurt Meier" />
<Person name="Hans Schulze" />
</div>
);
}
}
ReactDOM.render(<App headline="List of Attendees"/>,
document.getElementById('root'));
JSX
Leonso 22
8th Sutol Conference, November 2016
Example
import React from 'react';
import ReactDOM from 'react-dom';
class App extends Component {
render() {
return (
<div>
<h1>{this.props.headline}</h1>
<Person name="Kurt Meier" />
<Person name="Hans Schulze" />
</div>
);
}
}
ES6 (ECMAScript2015)
Leonso 23
8th Sutol Conference, November 2016
Babel
• converts JSX into normal JavaScript
<App headline="List of Attendees"/>
React.createElement(App, {headline:" List of Attendees "});
• converts ES6 into browser's JavaScript
version
you develop in a future language version 
Leonso 24
8th Sutol Conference, November 2016
Events
class App extends Component {
deletePerson(person) {
this.setState(…)
}
…
<Person name={person}
deletePerson={this.deletePerson} />
class Person extends Component {
render() {
return (
<div>
<h3>{this.props.name}</h3>
<button onClick={() => this.props.deletePerson(this.props.name)}>
delete
</button>
</div>
);
}
}
Leonso 25
8th Sutol Conference, November 2016
Events
Leonso 26
8th Sutol Conference, November 2016
Events
Leonso 27
8th Sutol Conference, November 2016
Events
Store
Leonso 28
8th Sutol Conference, November 2016
Events
Store
Events Data
Leonso 29
8th Sutol Conference, November 2016
Events
DispatcherStore
ActionsComponents
(previousState, action) => newState
Leonso 30
8th Sutol Conference, November 2016
Redux
all data (state) is stored in a single
store
state can be changed by actions only
new state is a copy of current state
with changes
allows time travel
Leonso 31
8th Sutol Conference, November 2016
Demo
Leonso 32
8th Sutol Conference, November 2016
Demo's components
App
Row
Prices Price
ReservedSeats
ReservedSeat
Button
Seat
Theatre
Stage
Leonso 33
8th Sutol Conference, November 2016
Development tools
• IDE
– Atom (free)
– WebStorm (my recommendation)
– Sublime Text
– Visual Studio Code (free)
• ESLint
– syntax check, rules
• Babel
Leonso 34
8th Sutol Conference, November 2016
Development tools
• webpack
– bundles code/CSS/resources in one file
"bundle.js"
• npm
– package manager
• Node.js
– JavaScript runtime
Leonso 35
8th Sutol Conference, November 2016
Development tools
• Browser Extensions for
Chrome and Firefox
– React Developer Tools
– Redux DevTools
Leonso 36
8th Sutol Conference, November 2016
Why Domino ?
Leonso 37
8th Sutol Conference, November 2016
Domino
database
Web server (XPages / Java / REST)
security
user management
cluster / replication
Leonso 38
8th Sutol Conference, November 2016
Domino
our customers have Domino
in production
all in one file (.nsf)
Leonso 39
8th Sutol Conference, November 2016
React and more ?
Leonso 40
8th Sutol Conference, November 2016
React Router
keeps UI in sync with the URL
lazy code loading
Leonso 41
8th Sutol Conference, November 2016
React Bootstrap
Bootstrap components
as easy to use as own components
buttons,
dialog boxes,
navigation,
page layout,
forms,
…
Leonso 42
8th Sutol Conference, November 2016
React Native
iOS & Android
creates real mobile apps
uses native components
learn once – write anywhere
85-90% shared code
Leonso 43
8th Sutol Conference, November 2016
Relay
uses GraphQL
data declaration
aggregated queries to fetch data
automatic data consistency
optimistic updates
Leonso 44
8th Sutol Conference, November 2016
Found:
Domino
Server
XPages
Browser
Java
React
& Co.
Code
Data
Leonso 45
8th Sutol Conference, November 2016
Benefits
– clear separation between client and server code
– great tools for client development
– reusable components
– high performance
Leonso 46
8th Sutol Conference, November 2016
Try it out!
• install node.js
• install "Create React App"
– https://github.com/facebookincubator/create-react-app
• code
Leonso 47
8th Sutol Conference, November 2016
Questions ?
Leonso 48
8th Sutol Conference, November 2016
Thank you!
Sources:
Pictures virtual DOM:
http://teropa.info/blog/2015/03/02/change-and-its-detection-in-javascript-frameworks.html

More Related Content

What's hot

FMK2017 - Tableau and FileMaker by Vince Menanno
FMK2017 - Tableau and FileMaker by Vince MenannoFMK2017 - Tableau and FileMaker by Vince Menanno
FMK2017 - Tableau and FileMaker by Vince Menanno
Verein FM Konferenz
 
Kotlin db migration tool
Kotlin db migration toolKotlin db migration tool
Kotlin db migration tool
Kenji Otsuka
 
Piwik Presentation
Piwik PresentationPiwik Presentation
Piwik Presentation
Matthieu Aubry
 
Building SharePoint Single Page Applications Using AngularJS
Building SharePoint Single Page Applications Using AngularJSBuilding SharePoint Single Page Applications Using AngularJS
Building SharePoint Single Page Applications Using AngularJS
SharePointInstitute
 
BladeRunnerJS Show & Tell
BladeRunnerJS Show & TellBladeRunnerJS Show & Tell
BladeRunnerJS Show & Tell
Phil Leggetter
 
Hack angular wildly
Hack angular wildlyHack angular wildly
Hack angular wildly
Todd Warren
 
A Power User's Intro to jQuery Awesomeness in SharePoint
A Power User's Intro to jQuery Awesomeness in SharePointA Power User's Intro to jQuery Awesomeness in SharePoint
A Power User's Intro to jQuery Awesomeness in SharePoint
Mark Rackley
 
Office script labs
Office script labsOffice script labs
Office script labs
Mark Roden
 
SPSNL16 - Building Office 365 and SharePoint solutions using modern developer...
SPSNL16 - Building Office 365 and SharePoint solutions using modern developer...SPSNL16 - Building Office 365 and SharePoint solutions using modern developer...
SPSNL16 - Building Office 365 and SharePoint solutions using modern developer...
Waldek Mastykarz
 
Building A Webb App with Firebase and Angular 2
Building A Webb App with Firebase and Angular 2Building A Webb App with Firebase and Angular 2
Building A Webb App with Firebase and Angular 2
Alex Hoffman
 
A Power User's intro to jQuery awesomeness in SharePoint
A Power User's intro to jQuery awesomeness in SharePointA Power User's intro to jQuery awesomeness in SharePoint
A Power User's intro to jQuery awesomeness in SharePoint
Mark Rackley
 
Web app job and functions - TUGAIT 2017
Web app job and functions  - TUGAIT 2017Web app job and functions  - TUGAIT 2017
Web app job and functions - TUGAIT 2017
Steef-Jan Wiggers
 
The code history of WordPress
The code history of WordPressThe code history of WordPress
The code history of WordPress
Marko Heijnen
 
.NET Core Foundations - Dependency Injection, Logging & Configuration - BASTA...
.NET Core Foundations - Dependency Injection, Logging & Configuration - BASTA....NET Core Foundations - Dependency Injection, Logging & Configuration - BASTA...
.NET Core Foundations - Dependency Injection, Logging & Configuration - BASTA...
Christian Nagel
 
Kql and the content search web part
Kql and the content search web part Kql and the content search web part
Kql and the content search web part
InnoTech
 
Forge - DevCon 2016: Collaborating with Design Data
Forge - DevCon 2016: Collaborating with Design DataForge - DevCon 2016: Collaborating with Design Data
Forge - DevCon 2016: Collaborating with Design Data
Autodesk
 
Serverless architecture
Serverless architectureServerless architecture
Serverless architecture
vipin kumar
 
I3 - Running SharePoint 2016 in Azure the do's and dont's - Jasjit Chopra
I3 - Running SharePoint 2016 in Azure the do's and dont's - Jasjit ChopraI3 - Running SharePoint 2016 in Azure the do's and dont's - Jasjit Chopra
I3 - Running SharePoint 2016 in Azure the do's and dont's - Jasjit Chopra
SPS Paris
 
What's new in ms graph api nilesh shah 5 apr 2018
What's new in ms graph api nilesh shah 5 apr 2018What's new in ms graph api nilesh shah 5 apr 2018
What's new in ms graph api nilesh shah 5 apr 2018
Nilesh Shah
 
Entity Framework Core 1.x/2.x Advanced
Entity Framework Core 1.x/2.x AdvancedEntity Framework Core 1.x/2.x Advanced
Entity Framework Core 1.x/2.x Advanced
Christian Nagel
 

What's hot (20)

FMK2017 - Tableau and FileMaker by Vince Menanno
FMK2017 - Tableau and FileMaker by Vince MenannoFMK2017 - Tableau and FileMaker by Vince Menanno
FMK2017 - Tableau and FileMaker by Vince Menanno
 
Kotlin db migration tool
Kotlin db migration toolKotlin db migration tool
Kotlin db migration tool
 
Piwik Presentation
Piwik PresentationPiwik Presentation
Piwik Presentation
 
Building SharePoint Single Page Applications Using AngularJS
Building SharePoint Single Page Applications Using AngularJSBuilding SharePoint Single Page Applications Using AngularJS
Building SharePoint Single Page Applications Using AngularJS
 
BladeRunnerJS Show & Tell
BladeRunnerJS Show & TellBladeRunnerJS Show & Tell
BladeRunnerJS Show & Tell
 
Hack angular wildly
Hack angular wildlyHack angular wildly
Hack angular wildly
 
A Power User's Intro to jQuery Awesomeness in SharePoint
A Power User's Intro to jQuery Awesomeness in SharePointA Power User's Intro to jQuery Awesomeness in SharePoint
A Power User's Intro to jQuery Awesomeness in SharePoint
 
Office script labs
Office script labsOffice script labs
Office script labs
 
SPSNL16 - Building Office 365 and SharePoint solutions using modern developer...
SPSNL16 - Building Office 365 and SharePoint solutions using modern developer...SPSNL16 - Building Office 365 and SharePoint solutions using modern developer...
SPSNL16 - Building Office 365 and SharePoint solutions using modern developer...
 
Building A Webb App with Firebase and Angular 2
Building A Webb App with Firebase and Angular 2Building A Webb App with Firebase and Angular 2
Building A Webb App with Firebase and Angular 2
 
A Power User's intro to jQuery awesomeness in SharePoint
A Power User's intro to jQuery awesomeness in SharePointA Power User's intro to jQuery awesomeness in SharePoint
A Power User's intro to jQuery awesomeness in SharePoint
 
Web app job and functions - TUGAIT 2017
Web app job and functions  - TUGAIT 2017Web app job and functions  - TUGAIT 2017
Web app job and functions - TUGAIT 2017
 
The code history of WordPress
The code history of WordPressThe code history of WordPress
The code history of WordPress
 
.NET Core Foundations - Dependency Injection, Logging & Configuration - BASTA...
.NET Core Foundations - Dependency Injection, Logging & Configuration - BASTA....NET Core Foundations - Dependency Injection, Logging & Configuration - BASTA...
.NET Core Foundations - Dependency Injection, Logging & Configuration - BASTA...
 
Kql and the content search web part
Kql and the content search web part Kql and the content search web part
Kql and the content search web part
 
Forge - DevCon 2016: Collaborating with Design Data
Forge - DevCon 2016: Collaborating with Design DataForge - DevCon 2016: Collaborating with Design Data
Forge - DevCon 2016: Collaborating with Design Data
 
Serverless architecture
Serverless architectureServerless architecture
Serverless architecture
 
I3 - Running SharePoint 2016 in Azure the do's and dont's - Jasjit Chopra
I3 - Running SharePoint 2016 in Azure the do's and dont's - Jasjit ChopraI3 - Running SharePoint 2016 in Azure the do's and dont's - Jasjit Chopra
I3 - Running SharePoint 2016 in Azure the do's and dont's - Jasjit Chopra
 
What's new in ms graph api nilesh shah 5 apr 2018
What's new in ms graph api nilesh shah 5 apr 2018What's new in ms graph api nilesh shah 5 apr 2018
What's new in ms graph api nilesh shah 5 apr 2018
 
Entity Framework Core 1.x/2.x Advanced
Entity Framework Core 1.x/2.x AdvancedEntity Framework Core 1.x/2.x Advanced
Entity Framework Core 1.x/2.x Advanced
 

Viewers also liked

2016 DNUG #43: Modernstes Front-End für Domino: React
2016 DNUG #43: Modernstes Front-End für Domino: React2016 DNUG #43: Modernstes Front-End für Domino: React
2016 DNUG #43: Modernstes Front-End für Domino: React
Knut Herrmann
 
AD503: XPages Mobile Development in IBM Domino 9.0.1 and Beyond
AD503: XPages Mobile Development in IBM Domino 9.0.1 and BeyondAD503: XPages Mobile Development in IBM Domino 9.0.1 and Beyond
AD503: XPages Mobile Development in IBM Domino 9.0.1 and Beyond
Tony McGuckin
 
ReactJS.NET - Fast and Scalable Single Page Applications
ReactJS.NET - Fast and Scalable Single Page ApplicationsReactJS.NET - Fast and Scalable Single Page Applications
ReactJS.NET - Fast and Scalable Single Page Applications
Rick Beerendonk
 
REACT.JS : Rethinking UI Development Using JavaScript
REACT.JS : Rethinking UI Development Using JavaScriptREACT.JS : Rethinking UI Development Using JavaScript
REACT.JS : Rethinking UI Development Using JavaScript
Deepu S Nath
 
The future of web development write once, run everywhere with angular.js and ...
The future of web development write once, run everywhere with angular.js and ...The future of web development write once, run everywhere with angular.js and ...
The future of web development write once, run everywhere with angular.js and ...
Mark Roden
 
Socialytics: Accelerating IBM Connections Adoption with Watson Analytics
Socialytics: Accelerating IBM Connections Adoption with Watson AnalyticsSocialytics: Accelerating IBM Connections Adoption with Watson Analytics
Socialytics: Accelerating IBM Connections Adoption with Watson Analytics
Femke Goedhart
 
IBM Connect 2017: Your Data In the Major Leagues: A Practical Guide to REST S...
IBM Connect 2017: Your Data In the Major Leagues: A Practical Guide to REST S...IBM Connect 2017: Your Data In the Major Leagues: A Practical Guide to REST S...
IBM Connect 2017: Your Data In the Major Leagues: A Practical Guide to REST S...
Serdar Basegmez
 
7 Stages of Scaling Web Applications
7 Stages of Scaling Web Applications7 Stages of Scaling Web Applications
7 Stages of Scaling Web Applications
David Mitzenmacher
 

Viewers also liked (8)

2016 DNUG #43: Modernstes Front-End für Domino: React
2016 DNUG #43: Modernstes Front-End für Domino: React2016 DNUG #43: Modernstes Front-End für Domino: React
2016 DNUG #43: Modernstes Front-End für Domino: React
 
AD503: XPages Mobile Development in IBM Domino 9.0.1 and Beyond
AD503: XPages Mobile Development in IBM Domino 9.0.1 and BeyondAD503: XPages Mobile Development in IBM Domino 9.0.1 and Beyond
AD503: XPages Mobile Development in IBM Domino 9.0.1 and Beyond
 
ReactJS.NET - Fast and Scalable Single Page Applications
ReactJS.NET - Fast and Scalable Single Page ApplicationsReactJS.NET - Fast and Scalable Single Page Applications
ReactJS.NET - Fast and Scalable Single Page Applications
 
REACT.JS : Rethinking UI Development Using JavaScript
REACT.JS : Rethinking UI Development Using JavaScriptREACT.JS : Rethinking UI Development Using JavaScript
REACT.JS : Rethinking UI Development Using JavaScript
 
The future of web development write once, run everywhere with angular.js and ...
The future of web development write once, run everywhere with angular.js and ...The future of web development write once, run everywhere with angular.js and ...
The future of web development write once, run everywhere with angular.js and ...
 
Socialytics: Accelerating IBM Connections Adoption with Watson Analytics
Socialytics: Accelerating IBM Connections Adoption with Watson AnalyticsSocialytics: Accelerating IBM Connections Adoption with Watson Analytics
Socialytics: Accelerating IBM Connections Adoption with Watson Analytics
 
IBM Connect 2017: Your Data In the Major Leagues: A Practical Guide to REST S...
IBM Connect 2017: Your Data In the Major Leagues: A Practical Guide to REST S...IBM Connect 2017: Your Data In the Major Leagues: A Practical Guide to REST S...
IBM Connect 2017: Your Data In the Major Leagues: A Practical Guide to REST S...
 
7 Stages of Scaling Web Applications
7 Stages of Scaling Web Applications7 Stages of Scaling Web Applications
7 Stages of Scaling Web Applications
 

Similar to 2016 SUTOL: React.js – High-Performance Client for Domino

.NET Recommended Resources
.NET Recommended Resources.NET Recommended Resources
.NET Recommended Resources
Greg Sohl
 
PHP is the king, nodejs is the prince and Python is the fool - Alessandro Cin...
PHP is the king, nodejs is the prince and Python is the fool - Alessandro Cin...PHP is the king, nodejs is the prince and Python is the fool - Alessandro Cin...
PHP is the king, nodejs is the prince and Python is the fool - Alessandro Cin...
Codemotion
 
PHP is the King, nodejs the prince and python the fool
PHP is the King, nodejs the prince and python the foolPHP is the King, nodejs the prince and python the fool
PHP is the King, nodejs the prince and python the fool
Alessandro Cinelli (cirpo)
 
2018 12-06 SharePoint - the new era of provisioning
2018 12-06 SharePoint - the new era of provisioning2018 12-06 SharePoint - the new era of provisioning
2018 12-06 SharePoint - the new era of provisioning
Yannick Plenevaux
 
DocDokuPLM: Domain Specific PaaS and Business Oriented API
DocDokuPLM: Domain Specific PaaS and Business Oriented APIDocDokuPLM: Domain Specific PaaS and Business Oriented API
DocDokuPLM: Domain Specific PaaS and Business Oriented API
DocDoku
 
DocDokuPLM : Domain Specific PaaS and Business Oriented API, OW2con'16, Paris.
DocDokuPLM : Domain Specific PaaS and Business Oriented API, OW2con'16, Paris. DocDokuPLM : Domain Specific PaaS and Business Oriented API, OW2con'16, Paris.
DocDokuPLM : Domain Specific PaaS and Business Oriented API, OW2con'16, Paris.
OW2
 
Domain specific-paa s-and-business-oriented-api-docdoku-ow2con-2016
Domain specific-paa s-and-business-oriented-api-docdoku-ow2con-2016Domain specific-paa s-and-business-oriented-api-docdoku-ow2con-2016
Domain specific-paa s-and-business-oriented-api-docdoku-ow2con-2016
Eric Descargues
 
Life beyond Java 8
Life beyond Java 8Life beyond Java 8
Life beyond Java 8
C4Media
 
Oh Crap, My Code is Slow - Madison PHP 2016
Oh Crap, My Code is Slow - Madison PHP 2016Oh Crap, My Code is Slow - Madison PHP 2016
Oh Crap, My Code is Slow - Madison PHP 2016
Chris Tankersley
 
Let's build Developer Portal with Backstage
Let's build Developer Portal with BackstageLet's build Developer Portal with Backstage
Let's build Developer Portal with Backstage
Opsta
 
#OSSPARIS17 - The CROSSMINER H2020 Project: Developer-Centric Knowledge Minin...
#OSSPARIS17 - The CROSSMINER H2020 Project: Developer-Centric Knowledge Minin...#OSSPARIS17 - The CROSSMINER H2020 Project: Developer-Centric Knowledge Minin...
#OSSPARIS17 - The CROSSMINER H2020 Project: Developer-Centric Knowledge Minin...
Paris Open Source Summit
 
Paris Open Source Summit, Floss - Innovation collaborative 2017 Alessandra Ba...
Paris Open Source Summit, Floss - Innovation collaborative 2017 Alessandra Ba...Paris Open Source Summit, Floss - Innovation collaborative 2017 Alessandra Ba...
Paris Open Source Summit, Floss - Innovation collaborative 2017 Alessandra Ba...
Alessandra Bagnato
 
The CROSSMINER H2020 Project: Developer-Centric Knowledge Mining from Large ...
 The CROSSMINER H2020 Project: Developer-Centric Knowledge Mining from Large ... The CROSSMINER H2020 Project: Developer-Centric Knowledge Mining from Large ...
The CROSSMINER H2020 Project: Developer-Centric Knowledge Mining from Large ...
OW2
 
0506-django-web-framework-for-python.pdf
0506-django-web-framework-for-python.pdf0506-django-web-framework-for-python.pdf
0506-django-web-framework-for-python.pdf
radhianiedjan1
 
Sutol 2016 - Automation is developer's friend
Sutol 2016 - Automation is developer's friendSutol 2016 - Automation is developer's friend
Sutol 2016 - Automation is developer's friend
mpradny
 
Django
DjangoDjango
SharePoint 2010: What's New For Developers
SharePoint 2010: What's New For DevelopersSharePoint 2010: What's New For Developers
SharePoint 2010: What's New For Developers
imason Inc.
 
[HKDUG] #20161210 - BarCamp Hong Kong 2016 - What's News in PHP?
[HKDUG] #20161210 - BarCamp Hong Kong 2016 - What's News in PHP?[HKDUG] #20161210 - BarCamp Hong Kong 2016 - What's News in PHP?
[HKDUG] #20161210 - BarCamp Hong Kong 2016 - What's News in PHP?
Wong Hoi Sing Edison
 
M365 global developer bootcamp 2019 Intro to SPFx Version
M365 global developer bootcamp 2019 Intro to SPFx VersionM365 global developer bootcamp 2019 Intro to SPFx Version
M365 global developer bootcamp 2019 Intro to SPFx Version
Thomas Daly
 
Introduction to Shiny for building web apps in R
Introduction to Shiny for building web apps in RIntroduction to Shiny for building web apps in R
Introduction to Shiny for building web apps in R
Paul Richards
 

Similar to 2016 SUTOL: React.js – High-Performance Client for Domino (20)

.NET Recommended Resources
.NET Recommended Resources.NET Recommended Resources
.NET Recommended Resources
 
PHP is the king, nodejs is the prince and Python is the fool - Alessandro Cin...
PHP is the king, nodejs is the prince and Python is the fool - Alessandro Cin...PHP is the king, nodejs is the prince and Python is the fool - Alessandro Cin...
PHP is the king, nodejs is the prince and Python is the fool - Alessandro Cin...
 
PHP is the King, nodejs the prince and python the fool
PHP is the King, nodejs the prince and python the foolPHP is the King, nodejs the prince and python the fool
PHP is the King, nodejs the prince and python the fool
 
2018 12-06 SharePoint - the new era of provisioning
2018 12-06 SharePoint - the new era of provisioning2018 12-06 SharePoint - the new era of provisioning
2018 12-06 SharePoint - the new era of provisioning
 
DocDokuPLM: Domain Specific PaaS and Business Oriented API
DocDokuPLM: Domain Specific PaaS and Business Oriented APIDocDokuPLM: Domain Specific PaaS and Business Oriented API
DocDokuPLM: Domain Specific PaaS and Business Oriented API
 
DocDokuPLM : Domain Specific PaaS and Business Oriented API, OW2con'16, Paris.
DocDokuPLM : Domain Specific PaaS and Business Oriented API, OW2con'16, Paris. DocDokuPLM : Domain Specific PaaS and Business Oriented API, OW2con'16, Paris.
DocDokuPLM : Domain Specific PaaS and Business Oriented API, OW2con'16, Paris.
 
Domain specific-paa s-and-business-oriented-api-docdoku-ow2con-2016
Domain specific-paa s-and-business-oriented-api-docdoku-ow2con-2016Domain specific-paa s-and-business-oriented-api-docdoku-ow2con-2016
Domain specific-paa s-and-business-oriented-api-docdoku-ow2con-2016
 
Life beyond Java 8
Life beyond Java 8Life beyond Java 8
Life beyond Java 8
 
Oh Crap, My Code is Slow - Madison PHP 2016
Oh Crap, My Code is Slow - Madison PHP 2016Oh Crap, My Code is Slow - Madison PHP 2016
Oh Crap, My Code is Slow - Madison PHP 2016
 
Let's build Developer Portal with Backstage
Let's build Developer Portal with BackstageLet's build Developer Portal with Backstage
Let's build Developer Portal with Backstage
 
#OSSPARIS17 - The CROSSMINER H2020 Project: Developer-Centric Knowledge Minin...
#OSSPARIS17 - The CROSSMINER H2020 Project: Developer-Centric Knowledge Minin...#OSSPARIS17 - The CROSSMINER H2020 Project: Developer-Centric Knowledge Minin...
#OSSPARIS17 - The CROSSMINER H2020 Project: Developer-Centric Knowledge Minin...
 
Paris Open Source Summit, Floss - Innovation collaborative 2017 Alessandra Ba...
Paris Open Source Summit, Floss - Innovation collaborative 2017 Alessandra Ba...Paris Open Source Summit, Floss - Innovation collaborative 2017 Alessandra Ba...
Paris Open Source Summit, Floss - Innovation collaborative 2017 Alessandra Ba...
 
The CROSSMINER H2020 Project: Developer-Centric Knowledge Mining from Large ...
 The CROSSMINER H2020 Project: Developer-Centric Knowledge Mining from Large ... The CROSSMINER H2020 Project: Developer-Centric Knowledge Mining from Large ...
The CROSSMINER H2020 Project: Developer-Centric Knowledge Mining from Large ...
 
0506-django-web-framework-for-python.pdf
0506-django-web-framework-for-python.pdf0506-django-web-framework-for-python.pdf
0506-django-web-framework-for-python.pdf
 
Sutol 2016 - Automation is developer's friend
Sutol 2016 - Automation is developer's friendSutol 2016 - Automation is developer's friend
Sutol 2016 - Automation is developer's friend
 
Django
DjangoDjango
Django
 
SharePoint 2010: What's New For Developers
SharePoint 2010: What's New For DevelopersSharePoint 2010: What's New For Developers
SharePoint 2010: What's New For Developers
 
[HKDUG] #20161210 - BarCamp Hong Kong 2016 - What's News in PHP?
[HKDUG] #20161210 - BarCamp Hong Kong 2016 - What's News in PHP?[HKDUG] #20161210 - BarCamp Hong Kong 2016 - What's News in PHP?
[HKDUG] #20161210 - BarCamp Hong Kong 2016 - What's News in PHP?
 
M365 global developer bootcamp 2019 Intro to SPFx Version
M365 global developer bootcamp 2019 Intro to SPFx VersionM365 global developer bootcamp 2019 Intro to SPFx Version
M365 global developer bootcamp 2019 Intro to SPFx Version
 
Introduction to Shiny for building web apps in R
Introduction to Shiny for building web apps in RIntroduction to Shiny for building web apps in R
Introduction to Shiny for building web apps in R
 

Recently uploaded

Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...
Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...
Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...
kalichargn70th171
 
LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptxLORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
lorraineandreiamcidl
 
Fundamentals of Programming and Language Processors
Fundamentals of Programming and Language ProcessorsFundamentals of Programming and Language Processors
Fundamentals of Programming and Language Processors
Rakesh Kumar R
 
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
Fermin Galan
 
Why Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise Edition
Why Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise EditionWhy Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise Edition
Why Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise Edition
Envertis Software Solutions
 
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
Łukasz Chruściel
 
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
Google
 
Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
Aftab Hussain
 
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
mz5nrf0n
 
E-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet DynamicsE-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet Dynamics
Hornet Dynamics
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke
 
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CDKuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
rodomar2
 
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdfAutomated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
timtebeek1
 
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Crescat
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
Drona Infotech
 
Empowering Growth with Best Software Development Company in Noida - Deuglo
Empowering Growth with Best Software  Development Company in Noida - DeugloEmpowering Growth with Best Software  Development Company in Noida - Deuglo
Empowering Growth with Best Software Development Company in Noida - Deuglo
Deuglo Infosystem Pvt Ltd
 
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket ManagementUtilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate
 
socradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdfsocradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdf
SOCRadar
 
DDS-Security 1.2 - What's New? Stronger security for long-running systems
DDS-Security 1.2 - What's New? Stronger security for long-running systemsDDS-Security 1.2 - What's New? Stronger security for long-running systems
DDS-Security 1.2 - What's New? Stronger security for long-running systems
Gerardo Pardo-Castellote
 

Recently uploaded (20)

Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...
Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...
Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...
 
LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptxLORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
 
Fundamentals of Programming and Language Processors
Fundamentals of Programming and Language ProcessorsFundamentals of Programming and Language Processors
Fundamentals of Programming and Language Processors
 
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
 
Why Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise Edition
Why Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise EditionWhy Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise Edition
Why Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise Edition
 
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
 
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
 
Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
 
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
 
E-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet DynamicsE-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet Dynamics
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
 
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CDKuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
 
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdfAutomated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
 
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
 
Empowering Growth with Best Software Development Company in Noida - Deuglo
Empowering Growth with Best Software  Development Company in Noida - DeugloEmpowering Growth with Best Software  Development Company in Noida - Deuglo
Empowering Growth with Best Software Development Company in Noida - Deuglo
 
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket ManagementUtilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
 
socradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdfsocradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdf
 
DDS-Security 1.2 - What's New? Stronger security for long-running systems
DDS-Security 1.2 - What's New? Stronger security for long-running systemsDDS-Security 1.2 - What's New? Stronger security for long-running systems
DDS-Security 1.2 - What's New? Stronger security for long-running systems
 

2016 SUTOL: React.js – High-Performance Client for Domino

  • 1. Leonso 1 8th Sutol Conference, November 2016 React.js – High-Performance Client for Domino Knut Herrmann
  • 2. Leonso 2 Thanks to our sponsors!
  • 3. Leonso 3 8th Sutol Conference, November 2016 Knut Herrmann • Senior Software Architect Leonso GmbH • Notes Domino developer since version 2 • Web application developer • StackOverflow contributor E-Mail: knut.herrmann@leonso.de Twitter: @KnutHerrmann Skype: knut.herrmann
  • 4. Leonso 4 8th Sutol Conference, November 2016 Why React?
  • 5. Leonso 5 8th Sutol Conference, November 2016 Domino Server Notes Client Code Data
  • 6. Leonso 6 8th Sutol Conference, November 2016 Domino Server XPages Browser Dojo Data HTML JS
  • 7. Leonso 7 8th Sutol Conference, November 2016 Domino Server XPages Browser Dojo Data HTML JS Java
  • 8. Leonso 8 8th Sutol Conference, November 2016 Domino Server XPages Browser Dojo Data HTML JS Java jQueryjqGrid Select2 Bootstrap
  • 9. Leonso 9 8th Sutol Conference, November 2016 Domino Server XPages Browser Java ? Code Data Database JSON UI Wanted:
  • 10. Leonso 10 8th Sutol Conference, November 2016 Angular ?
  • 11. Leonso 11 8th Sutol Conference, November 2016 React !
  • 12. Leonso 12 8th Sutol Conference, November 2016 React high performance reusable components declarative readable code developed by Facebook
  • 13. Leonso 13 8th Sutol Conference, November 2016 GitHub Star Ranking 2013 May - first commit 2014 December - #33 2016 November - #5
  • 14. Leonso 14 8th Sutol Conference, November 2016 Websites built with React
  • 15. Leonso 15 8th Sutol Conference, November 2016 What is React?
  • 16. Leonso 16 8th Sutol Conference, November 2016 React JavaScript library – not a framework renders HTML on client side virtual DOM One-way data flow
  • 17. Leonso 17 8th Sutol Conference, November 2016 virtual DOM
  • 18. Leonso 18 8th Sutol Conference, November 2016 virtual DOM
  • 19. Leonso 19 8th Sutol Conference, November 2016 Component component state – internal data render() – returns elements to render and event handling lifecycle functions – mounting, changes, unmounting props – data and functions as parameter child componentscomponent component … component component …
  • 20. Leonso 20 8th Sutol Conference, November 2016 Example import React from 'react'; import ReactDOM from 'react-dom'; class App extends Component { render() { return ( <div> <h1>{this.props.headline}</h1> <Person name="Kurt Meier" /> <Person name="Hans Schulze" /> </div> ); } } ReactDOM.render(<App headline="List of Attendees"/>, document.getElementById('root')); class Person extends Component { render() { return ( <div> <h3>{this.props.name}</h3> </div> ); } }
  • 21. Leonso 21 8th Sutol Conference, November 2016 Example class App extends Component { render() { return ( <div> <h1>{this.props.headline}</h1> <Person name="Kurt Meier" /> <Person name="Hans Schulze" /> </div> ); } } ReactDOM.render(<App headline="List of Attendees"/>, document.getElementById('root')); JSX
  • 22. Leonso 22 8th Sutol Conference, November 2016 Example import React from 'react'; import ReactDOM from 'react-dom'; class App extends Component { render() { return ( <div> <h1>{this.props.headline}</h1> <Person name="Kurt Meier" /> <Person name="Hans Schulze" /> </div> ); } } ES6 (ECMAScript2015)
  • 23. Leonso 23 8th Sutol Conference, November 2016 Babel • converts JSX into normal JavaScript <App headline="List of Attendees"/> React.createElement(App, {headline:" List of Attendees "}); • converts ES6 into browser's JavaScript version you develop in a future language version 
  • 24. Leonso 24 8th Sutol Conference, November 2016 Events class App extends Component { deletePerson(person) { this.setState(…) } … <Person name={person} deletePerson={this.deletePerson} /> class Person extends Component { render() { return ( <div> <h3>{this.props.name}</h3> <button onClick={() => this.props.deletePerson(this.props.name)}> delete </button> </div> ); } }
  • 25. Leonso 25 8th Sutol Conference, November 2016 Events
  • 26. Leonso 26 8th Sutol Conference, November 2016 Events
  • 27. Leonso 27 8th Sutol Conference, November 2016 Events Store
  • 28. Leonso 28 8th Sutol Conference, November 2016 Events Store Events Data
  • 29. Leonso 29 8th Sutol Conference, November 2016 Events DispatcherStore ActionsComponents (previousState, action) => newState
  • 30. Leonso 30 8th Sutol Conference, November 2016 Redux all data (state) is stored in a single store state can be changed by actions only new state is a copy of current state with changes allows time travel
  • 31. Leonso 31 8th Sutol Conference, November 2016 Demo
  • 32. Leonso 32 8th Sutol Conference, November 2016 Demo's components App Row Prices Price ReservedSeats ReservedSeat Button Seat Theatre Stage
  • 33. Leonso 33 8th Sutol Conference, November 2016 Development tools • IDE – Atom (free) – WebStorm (my recommendation) – Sublime Text – Visual Studio Code (free) • ESLint – syntax check, rules • Babel
  • 34. Leonso 34 8th Sutol Conference, November 2016 Development tools • webpack – bundles code/CSS/resources in one file "bundle.js" • npm – package manager • Node.js – JavaScript runtime
  • 35. Leonso 35 8th Sutol Conference, November 2016 Development tools • Browser Extensions for Chrome and Firefox – React Developer Tools – Redux DevTools
  • 36. Leonso 36 8th Sutol Conference, November 2016 Why Domino ?
  • 37. Leonso 37 8th Sutol Conference, November 2016 Domino database Web server (XPages / Java / REST) security user management cluster / replication
  • 38. Leonso 38 8th Sutol Conference, November 2016 Domino our customers have Domino in production all in one file (.nsf)
  • 39. Leonso 39 8th Sutol Conference, November 2016 React and more ?
  • 40. Leonso 40 8th Sutol Conference, November 2016 React Router keeps UI in sync with the URL lazy code loading
  • 41. Leonso 41 8th Sutol Conference, November 2016 React Bootstrap Bootstrap components as easy to use as own components buttons, dialog boxes, navigation, page layout, forms, …
  • 42. Leonso 42 8th Sutol Conference, November 2016 React Native iOS & Android creates real mobile apps uses native components learn once – write anywhere 85-90% shared code
  • 43. Leonso 43 8th Sutol Conference, November 2016 Relay uses GraphQL data declaration aggregated queries to fetch data automatic data consistency optimistic updates
  • 44. Leonso 44 8th Sutol Conference, November 2016 Found: Domino Server XPages Browser Java React & Co. Code Data
  • 45. Leonso 45 8th Sutol Conference, November 2016 Benefits – clear separation between client and server code – great tools for client development – reusable components – high performance
  • 46. Leonso 46 8th Sutol Conference, November 2016 Try it out! • install node.js • install "Create React App" – https://github.com/facebookincubator/create-react-app • code
  • 47. Leonso 47 8th Sutol Conference, November 2016 Questions ?
  • 48. Leonso 48 8th Sutol Conference, November 2016 Thank you! Sources: Pictures virtual DOM: http://teropa.info/blog/2015/03/02/change-and-its-detection-in-javascript-frameworks.html