SlideShare ist ein Scribd-Unternehmen logo
1 von 37
Downloaden Sie, um offline zu lesen
Web frontend is an app too!
Jakub Baierl
Before
Using MVP frameworks - PHP Symfony, Nette, Laravel, Wordpress
Non static websites - web frontend dependent of backend
Web frontend as a part of backend - only templates, no possibility of code
reusing, no flexibility
Slow performance
Hard build and deploy process - installing packages for whole system
Now
Simple Scalability - few files hosted even on different server, focus on my
application - not whole infrastructure
Communication via API
Modularity - more suitables technologies for different problems
Increased Flexibility - using API for web, mobile app, public expose
Separate build and deploy
How to choose
the right technology?
Who will win? Client’s wish,
common sense or our pride?
Web frontend is independent -> huge market of frameworks & libs
Constant changes or hard resets on dev stacks
Build app on unsuitable technology
Requirements
Administrative part - fetching data from API, huge number of forms,
dynamic part - graphs, sorting lists, maps
Requirements
Administrative part - fetching data from API, huge number of forms,
dynamic part - graphs, sorting lists, maps
Requirements
Client app - fetching data from API, loading data once (mobile app base),
temporary saving data, custom responsive layout, SEO
Requirements
Client app - fetching data from API, loading data once (mobile app base),
temporary saving data, custom responsive layout, SEO
Prepared packages
Static websites - pure HTML, SASS, JS
Static websites with support of multiple languages or dynamic elements or
SEO - Middleman generator of static sites
Dynamic websites with fast communication with API - React (server
rendering for seo), Webpack
Nonpublic administration (internal) systems - React, Webpack, Redux
Choose from the magic pouch
Chosen heroes
React - Layout, Components, App structure, Server-rendering (microsite)
Fetch API - Getting data from API
Redux - Data flow, App state
Sass - CSS preprocessor, design
React
component-based javascript library
only for user interface
prepared events - onClick, onHover
virtual DOM
Containers
class CarContainer extends Component {
constructor(props) {
super(props);
}
render = () => {
return (
<Loader show={this.props.isFetching}>
{this.props.car ?
<CarComponent car={car}/>
: null}
</Loader>
);
}
}
export default connect(state => ({
isFetching: state.carIsFetching,
car: state.car,
}),
(dispatch) => ({
carActions: bindActionCreators(carActions, dispatch)
})
)(CarContainer);
Components
class CarComponent extends Component {
constructor(props) {
super(props);
};
componentWillMount () {}
componentDidMount () {}
render() {
return (
<div>
<p>{this.props.car.name}</p>
</div>
);
};
};
export default CarComponent;
Managing data
stop using carcinogenic CALLBACKS
button -> click ->wait for callback ….. confusion
NOW -> unidirectional data flow -> button -> click -> make action ->
change application state -> components reload
Redux
CSS before
Huge files
No code reusing
Non-objective
No flexibility - change color of app - change on 100 lines
—> use CSS preprocessors - Less, Sass, Stylus
Sass now!
Variables
Nesting
Mixins - code reusing
Imports - different libraries
Math - width: (100%+35)
Simply awesome <3
Variables & Nesting
//Prague open fesival 2017
$main_colour_1: #0C4D78
$main_colour_2: #0f4064 
$second_colour: #F7966B
$bg_colour: #ffffff
$contrast_colour: #000000
$text_colour_1: #000000
$text_colour_2: #ffffff
=====================================================
// Testing of sass loader
@import "../../common.sass"
@import "../../../../variables.sass"
.Header
background-color: $main_colour_1
&-logo
float: left
img
width: 100%
Building the web app
Transpiling to browser language - from JSX, ES6 …
Translate Sass files to CSS files
Livereloading - realtime watching for changes and reloading app
Different data for development and production
Tools: Gulp, Grunt, Webpack
module bundler
dependency graph -> bundles
-> browser can load it
building
watching
transpiling
extracting
minifying
uglyfying
livereload support
development vs. production
Webpack
var Webpack = require('webpack');
var LiveReloadPlugin = require('webpack-livereload-plugin');
var GlobalConfig = require('./config_global.js');
module.exports = {
entry: "./src/ui/module.js",
output: {
path: "./"+process.env.NAME,
filename: "bundle.js"
},
module: {
loaders: [
{
test: /.js$/,
exclude: /node_modules/,
loader: 'babel-loader',
query: {
presets: ['react']
}
},
{
test: /.sass$/,
loader: 'style!css!sass?indentedSyntax'
},
{
test: /.css$/,
loader: "style!css"
},
{
test: /.(png|gif)$/,
loader: "url?mimetype=image/[ext]&limit=10000"
}
]
},
plugins: [
new LiveReloadPlugin(),
new webpack.optimize.UglifyJsPlugin({
compress: {
warnings: false,
},
}),
build native mobile apps with
javascript!
using native blocks (java, obj-c)
compose blocks using JS
best solution for specific applications
React Native
render() {
const rows = this.state.news.map((row, ii)
=> {
return <Row key={ii} data={row.data}/>;
});
return (
<ScrollView
style={styles.scrollview}
refreshControl={
<RefreshControl
refreshing={this.props.isFetching}
onRefresh={this._onRefresh}
tintColor="#1b1b1b"
title="Loading..."
titleColor="#1b1b1b"
colors={['#ff0000', '#00ff00',
'#0000ff']}
progressBackgroundColor="#ffed00"
/>
}>
{rows}
</ScrollView>
);
}
Advanced topic
Hosting react apps - Google Storage Bucket
Redux sagas and middleware
React native routing - using native controllers
www.ackee.de
lovely people, lovely apps

Weitere ähnliche Inhalte

Was ist angesagt?

The Apollo and GraphQL Stack
The Apollo and GraphQL StackThe Apollo and GraphQL Stack
The Apollo and GraphQL Stack
Sashko Stubailo
 

Was ist angesagt? (20)

Google cloud functions
Google cloud functionsGoogle cloud functions
Google cloud functions
 
Build 2017 - B8110 - Modernize WinForms and WPF apps with maximum code reuse,...
Build 2017 - B8110 - Modernize WinForms and WPF apps with maximum code reuse,...Build 2017 - B8110 - Modernize WinForms and WPF apps with maximum code reuse,...
Build 2017 - B8110 - Modernize WinForms and WPF apps with maximum code reuse,...
 
Demand driven applications with om.next and react native
Demand driven applications with om.next and react nativeDemand driven applications with om.next and react native
Demand driven applications with om.next and react native
 
Blazor and Azure Functions - a serverless approach
Blazor and Azure Functions - a serverless approachBlazor and Azure Functions - a serverless approach
Blazor and Azure Functions - a serverless approach
 
Serverless in azure
Serverless in azureServerless in azure
Serverless in azure
 
Build a Chatbot in Ten Minutes - Dave Kerr - Serverless Summit
Build a Chatbot in Ten Minutes - Dave Kerr - Serverless SummitBuild a Chatbot in Ten Minutes - Dave Kerr - Serverless Summit
Build a Chatbot in Ten Minutes - Dave Kerr - Serverless Summit
 
Azure Static Web Apps 入門
Azure Static Web Apps 入門Azure Static Web Apps 入門
Azure Static Web Apps 入門
 
Building Tools for the Hadoop Developer
Building Tools for the Hadoop DeveloperBuilding Tools for the Hadoop Developer
Building Tools for the Hadoop Developer
 
Serverless Machine Learning Workshop
Serverless Machine Learning WorkshopServerless Machine Learning Workshop
Serverless Machine Learning Workshop
 
Simpler Web Architectures Now! (At The Frontend 2016)
Simpler Web Architectures Now! (At The Frontend 2016)Simpler Web Architectures Now! (At The Frontend 2016)
Simpler Web Architectures Now! (At The Frontend 2016)
 
Serverless + Machine Learning – Bringing the best of two worlds together
Serverless + Machine Learning – Bringing the best of two worlds togetherServerless + Machine Learning – Bringing the best of two worlds together
Serverless + Machine Learning – Bringing the best of two worlds together
 
Node.js BFFs: our way to better/micro frontends
Node.js BFFs: our way to better/micro frontendsNode.js BFFs: our way to better/micro frontends
Node.js BFFs: our way to better/micro frontends
 
Meteor + React
Meteor + ReactMeteor + React
Meteor + React
 
Asp.net visual studio 2013
Asp.net   visual studio 2013Asp.net   visual studio 2013
Asp.net visual studio 2013
 
TUTTO SU VISUAL STUDIO ALM 2015
TUTTO SU VISUAL STUDIO ALM 2015TUTTO SU VISUAL STUDIO ALM 2015
TUTTO SU VISUAL STUDIO ALM 2015
 
React Alicante - React Redux a development workflow
React Alicante - React Redux a development workflowReact Alicante - React Redux a development workflow
React Alicante - React Redux a development workflow
 
Creating Island Tracker - Xamarin, Azure Functions, Table Storage, & More
Creating Island Tracker - Xamarin, Azure Functions, Table Storage, & MoreCreating Island Tracker - Xamarin, Azure Functions, Table Storage, & More
Creating Island Tracker - Xamarin, Azure Functions, Table Storage, & More
 
Net Conf Israel - Intro & Building Cloud Native Apps with .NET Core 3.0 and K...
Net Conf Israel - Intro & Building Cloud Native Apps with .NET Core 3.0 and K...Net Conf Israel - Intro & Building Cloud Native Apps with .NET Core 3.0 and K...
Net Conf Israel - Intro & Building Cloud Native Apps with .NET Core 3.0 and K...
 
The Apollo and GraphQL Stack
The Apollo and GraphQL StackThe Apollo and GraphQL Stack
The Apollo and GraphQL Stack
 
Going Serverless with Azure Functions
Going Serverless with Azure FunctionsGoing Serverless with Azure Functions
Going Serverless with Azure Functions
 

Ähnlich wie Get your mobile app in production in 3 months: Native and Reactive Mobile Apps

Ähnlich wie Get your mobile app in production in 3 months: Native and Reactive Mobile Apps (20)

Rest web service_with_spring_hateoas
Rest web service_with_spring_hateoasRest web service_with_spring_hateoas
Rest web service_with_spring_hateoas
 
Maciej Treder ''Angular Universal - a medicine for the Angular + SEO/CDN issu...
Maciej Treder ''Angular Universal - a medicine for the Angular + SEO/CDN issu...Maciej Treder ''Angular Universal - a medicine for the Angular + SEO/CDN issu...
Maciej Treder ''Angular Universal - a medicine for the Angular + SEO/CDN issu...
 
React loadable
React loadableReact loadable
React loadable
 
WordCamp Bucharest 2017
WordCamp Bucharest 2017WordCamp Bucharest 2017
WordCamp Bucharest 2017
 
Vue micro frontend implementation patterns
Vue micro frontend implementation patternsVue micro frontend implementation patterns
Vue micro frontend implementation patterns
 
Vuejs
VuejsVuejs
Vuejs
 
Angular server side rendering - Strategies & Technics
Angular server side rendering - Strategies & Technics Angular server side rendering - Strategies & Technics
Angular server side rendering - Strategies & Technics
 
Front End Development for Back End Java Developers - Jfokus 2020
Front End Development for Back End Java Developers - Jfokus 2020Front End Development for Back End Java Developers - Jfokus 2020
Front End Development for Back End Java Developers - Jfokus 2020
 
Reactive application using meteor
Reactive application using meteorReactive application using meteor
Reactive application using meteor
 
Workshop 27: Isomorphic web apps with ReactJS
Workshop 27: Isomorphic web apps with ReactJSWorkshop 27: Isomorphic web apps with ReactJS
Workshop 27: Isomorphic web apps with ReactJS
 
Hybrid application development
Hybrid application developmentHybrid application development
Hybrid application development
 
using Mithril.js + postgREST to build and consume API's
using Mithril.js + postgREST to build and consume API'susing Mithril.js + postgREST to build and consume API's
using Mithril.js + postgREST to build and consume API's
 
Magnolia & Angular JS - an Approach for Javascript RIAs Delivered by a CMS
Magnolia & Angular JS - an Approach for Javascript RIAs Delivered by a CMSMagnolia & Angular JS - an Approach for Javascript RIAs Delivered by a CMS
Magnolia & Angular JS - an Approach for Javascript RIAs Delivered by a CMS
 
Integrating React.js Into a PHP Application: Dutch PHP 2019
Integrating React.js Into a PHP Application: Dutch PHP 2019Integrating React.js Into a PHP Application: Dutch PHP 2019
Integrating React.js Into a PHP Application: Dutch PHP 2019
 
Reactive Application Using METEOR
Reactive Application Using METEORReactive Application Using METEOR
Reactive Application Using METEOR
 
JS Fest 2019/Autumn. Александр Товмач. JAMstack
JS Fest 2019/Autumn. Александр Товмач. JAMstackJS Fest 2019/Autumn. Александр Товмач. JAMstack
JS Fest 2019/Autumn. Александр Товмач. JAMstack
 
vue-storefront - PWA eCommerce for Magento2 MM17NYC presentation
vue-storefront - PWA eCommerce for Magento2 MM17NYC presentationvue-storefront - PWA eCommerce for Magento2 MM17NYC presentation
vue-storefront - PWA eCommerce for Magento2 MM17NYC presentation
 
Content-Driven Apps with React
Content-Driven Apps with ReactContent-Driven Apps with React
Content-Driven Apps with React
 
Resume new it_format
Resume new it_formatResume new it_format
Resume new it_format
 
MyMobileWeb Certification Part I
MyMobileWeb Certification Part IMyMobileWeb Certification Part I
MyMobileWeb Certification Part I
 

Kürzlich hochgeladen

Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 

Kürzlich hochgeladen (20)

Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 

Get your mobile app in production in 3 months: Native and Reactive Mobile Apps

  • 1. Web frontend is an app too! Jakub Baierl
  • 2. Before Using MVP frameworks - PHP Symfony, Nette, Laravel, Wordpress Non static websites - web frontend dependent of backend Web frontend as a part of backend - only templates, no possibility of code reusing, no flexibility Slow performance Hard build and deploy process - installing packages for whole system
  • 3. Now Simple Scalability - few files hosted even on different server, focus on my application - not whole infrastructure Communication via API Modularity - more suitables technologies for different problems Increased Flexibility - using API for web, mobile app, public expose Separate build and deploy
  • 4. How to choose the right technology?
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15. Who will win? Client’s wish, common sense or our pride? Web frontend is independent -> huge market of frameworks & libs Constant changes or hard resets on dev stacks Build app on unsuitable technology
  • 16.
  • 17. Requirements Administrative part - fetching data from API, huge number of forms, dynamic part - graphs, sorting lists, maps
  • 18. Requirements Administrative part - fetching data from API, huge number of forms, dynamic part - graphs, sorting lists, maps
  • 19. Requirements Client app - fetching data from API, loading data once (mobile app base), temporary saving data, custom responsive layout, SEO
  • 20. Requirements Client app - fetching data from API, loading data once (mobile app base), temporary saving data, custom responsive layout, SEO
  • 21. Prepared packages Static websites - pure HTML, SASS, JS Static websites with support of multiple languages or dynamic elements or SEO - Middleman generator of static sites Dynamic websites with fast communication with API - React (server rendering for seo), Webpack Nonpublic administration (internal) systems - React, Webpack, Redux
  • 22. Choose from the magic pouch
  • 23. Chosen heroes React - Layout, Components, App structure, Server-rendering (microsite) Fetch API - Getting data from API Redux - Data flow, App state Sass - CSS preprocessor, design
  • 24. React component-based javascript library only for user interface prepared events - onClick, onHover virtual DOM
  • 25. Containers class CarContainer extends Component { constructor(props) { super(props); } render = () => { return ( <Loader show={this.props.isFetching}> {this.props.car ? <CarComponent car={car}/> : null} </Loader> ); } } export default connect(state => ({ isFetching: state.carIsFetching, car: state.car, }), (dispatch) => ({ carActions: bindActionCreators(carActions, dispatch) }) )(CarContainer);
  • 26. Components class CarComponent extends Component { constructor(props) { super(props); }; componentWillMount () {} componentDidMount () {} render() { return ( <div> <p>{this.props.car.name}</p> </div> ); }; }; export default CarComponent;
  • 27. Managing data stop using carcinogenic CALLBACKS button -> click ->wait for callback ….. confusion NOW -> unidirectional data flow -> button -> click -> make action -> change application state -> components reload
  • 28. Redux
  • 29. CSS before Huge files No code reusing Non-objective No flexibility - change color of app - change on 100 lines —> use CSS preprocessors - Less, Sass, Stylus
  • 30. Sass now! Variables Nesting Mixins - code reusing Imports - different libraries Math - width: (100%+35) Simply awesome <3
  • 31. Variables & Nesting //Prague open fesival 2017 $main_colour_1: #0C4D78 $main_colour_2: #0f4064  $second_colour: #F7966B $bg_colour: #ffffff $contrast_colour: #000000 $text_colour_1: #000000 $text_colour_2: #ffffff ===================================================== // Testing of sass loader @import "../../common.sass" @import "../../../../variables.sass" .Header background-color: $main_colour_1 &-logo float: left img width: 100%
  • 32. Building the web app Transpiling to browser language - from JSX, ES6 … Translate Sass files to CSS files Livereloading - realtime watching for changes and reloading app Different data for development and production Tools: Gulp, Grunt, Webpack
  • 33. module bundler dependency graph -> bundles -> browser can load it building watching transpiling extracting minifying uglyfying livereload support development vs. production Webpack
  • 34. var Webpack = require('webpack'); var LiveReloadPlugin = require('webpack-livereload-plugin'); var GlobalConfig = require('./config_global.js'); module.exports = { entry: "./src/ui/module.js", output: { path: "./"+process.env.NAME, filename: "bundle.js" }, module: { loaders: [ { test: /.js$/, exclude: /node_modules/, loader: 'babel-loader', query: { presets: ['react'] } }, { test: /.sass$/, loader: 'style!css!sass?indentedSyntax' }, { test: /.css$/, loader: "style!css" }, { test: /.(png|gif)$/, loader: "url?mimetype=image/[ext]&limit=10000" } ] }, plugins: [ new LiveReloadPlugin(), new webpack.optimize.UglifyJsPlugin({ compress: { warnings: false, }, }),
  • 35. build native mobile apps with javascript! using native blocks (java, obj-c) compose blocks using JS best solution for specific applications React Native render() { const rows = this.state.news.map((row, ii) => { return <Row key={ii} data={row.data}/>; }); return ( <ScrollView style={styles.scrollview} refreshControl={ <RefreshControl refreshing={this.props.isFetching} onRefresh={this._onRefresh} tintColor="#1b1b1b" title="Loading..." titleColor="#1b1b1b" colors={['#ff0000', '#00ff00', '#0000ff']} progressBackgroundColor="#ffed00" /> }> {rows} </ScrollView> ); }
  • 36. Advanced topic Hosting react apps - Google Storage Bucket Redux sagas and middleware React native routing - using native controllers