SlideShare a Scribd company logo
Budowa elementów GUI
za pomocą biblioteki React
Tomek Sułkowski
about.md
• Prowadzący:
• Tomek Sułkowski

Front-end Developer

Trener IT
about.md
• Agenda:
• Wprowadzenie / kontekst / narzędzia
• Teoria / demo
• Warsztat
• Teoria / demo
• Warsztat
• …
• Q & A
Narzędzia
Node Package Manager
• system zarządzania zależnościami dla server-side js i client-side js
• zależności opisywane z dokładnością do wersji w pliku package.json 

(nowy projekt tworzymy przez npm init)
• npm install

- instaluje pakiety, których jeszcze nie ma w projekcie
• npm update 

- sprawdza, czy istnieją nowsze wersje pakietówinstaluje
• npm install nazwa-pakietu --save lub --save-dev 

- instaluje pakiet, dodaje go do package.json
przydatne skróty: 

npm init -y , npm i -S , npm i -D
webpack
npm install webpack -g

npm install webpack --save-dev
module.exports = {
entry: [
'./js/index.js'
],
output: {
path: __dirname + '/static/',
filename: 'bundle.js'
},
plugins: [],
module: {
loaders: [
{ test: /.js$/, loaders: ['babel'], exclude: /node_modules/ }
]
},
resolve: {
extensions: ['.js', '.json']
},
devtool: 'source-map'
};
hello React!
<body>
<div id="app"></div>
<script src="react/0.14/react.js"></script>
<script src="react/0.14/react-dom.js"></script>
<script>
var root = React.createElement('div', null, 'Hello React!');
ReactDOM.render(root, document.getElementById('app'));
</script>
</body>
hello React!
var root = React.createElement('section', null,
React.createElement('h1', null, 'Lista zakupów'),
React.createElement('h2', {id: 'food', className: 'subcaption'},
'Spożywcze'),
React.createElement('ul', null,
['Mleko', 'Jajka', 'Chleb'].map(function (item) {
React.createElement('li', null, i),
})
)
);
hello React!
var root = React.DOM.section(null,
React.DOM.h1(null, 'Lista zakupów'),
React.DOM.h2({id: 'food', className: 'subcaption'}, 'Spożywcze'),
React.DOM.ul(null,
['Mleko', 'Jajka', 'Chleb'].map(function (item) {
React.DOM.li(null, item)
});
)
);
hello JSX
var root = <section>
<h1>Lista zakupów</h1>
<h2 id="food" className="subcaption"></h2>
<ul>
{['Mleko', 'Jajka', 'Chleb'].map(function (item) {
return <li>{item}</li>
})}
</ul>
</section>;
React: component
var Paragraph = React.createClass({
render: function () {
return <p>{this.props.content}</p>;
}
});
class Paragraph extends React.Component {
render() {
return <p>{this.props.content}</p>;
}
}
const Paragraph = (props) =>
<p>{props.content}</p>;
ES5
ES6React 0.13
ES6React 0.14
React: component
class CommentBox extends React.Component {
render() {
return (
<div className="commentBox">
Hello, world! I am a CommentBox.
</div>
);
}
}
ECMAScript 2015: (aka ES6)
aktualna wersja
języka JavaScript
ES2015: przydatne konstrukcje
• Destructuring
• Spread operator
• Rest parameters
• Default values
• Arrow funcSons
• Template literals
• Object literals
• Classes
• Let, Const
• Modules ...
wypróbuj: https://babeljs.io/repl/ , http://jsbin.com, ...
zobacz: https://babeljs.io/docs/learn-es2015/
ECMAScript 2015: (aka ES6)
Wsparcie w przeglądarkach…
ES2015: narzędzia
• Pisząc kod aplikacji przeglądarkowych w ECMAScript 2015
musimy go transpilować
• Do wyboru: Traceur, TypeScript, Babel
… ale warto*

*szybki rozwój js, więcej możliwości już dziś, mniej boilerplate code, ...



„Transpilers are here to stay”
what the flux ?
ogólny opis architektury
what the flux ?
Facebook Flux, Fluxible by Yahoo, Reflux, Alt,
Flummox, Marty.js, McFly, Lux, Material Flux, Redux,
Flambeau, Nuclear.js, Fluxette, Fluxxor, Freezer
ogólny opis architektury
implementacje:
Redux
• Niekoniecznie dla aplikacji React
• Niewielki kod źródłowy
• Niecałkiem flux
• Lepsze możliwości hot reloading
• Dynamiczny ekosystem
czas na kod
Dzięki za uwagę i zapraszam na
hKp://www.sages.com.pl/Budowanie-wydajnych-i-
nowoczesnych-aplikacji-webowych-w-oparciu-o-React

More Related Content

PDF
Podstawy AngularJS
Sages
 
PDF
Technologia Xamarin i wprowadzenie do Windows IoT core
Sages
 
PPTX
Aplikacje internetowe real-time w oparciu o React/Redux
Dawid Rusnak
 
PDF
Wprowadzenie do technologii Big Data
Sages
 
PDF
Angular 4 pragmatycznie
Sages
 
PDF
GraphQL w React z wykorzystaniem Apollo
Boldare
 
PPTX
Platforma Kontentowa
Rafał Filipek
 
PPTX
Konrad Kokosa - Pamięć w .NET - od ogólu do szczegółu- 4developers2016
PROIDEA
 
Podstawy AngularJS
Sages
 
Technologia Xamarin i wprowadzenie do Windows IoT core
Sages
 
Aplikacje internetowe real-time w oparciu o React/Redux
Dawid Rusnak
 
Wprowadzenie do technologii Big Data
Sages
 
Angular 4 pragmatycznie
Sages
 
GraphQL w React z wykorzystaniem Apollo
Boldare
 
Platforma Kontentowa
Rafał Filipek
 
Konrad Kokosa - Pamięć w .NET - od ogólu do szczegółu- 4developers2016
PROIDEA
 

What's hot (20)

PDF
Znaki mocy dla laików – Programowanie funkcyjne w JavaScript
The Software House
 
PDF
Monitoring systemu. Dlaczego mój kardiolog jest bogatym człowiekiem?
The Software House
 
PDF
Architektura ngrx w angular 2+
Paweł Żurowski
 
PDF
Angular Restmod
Marcin Gajda
 
PDF
NSOperation(Queue)
Krzysztof Profic
 
PDF
TypeScript as a runtime error terminator
The Software House
 
PDF
Confitura 2018 - Sekretne życie jobów Sparkowych
Marcin Jasiński
 
PDF
Hugo - make webdev fun again
Marcin Gajda
 
PPTX
AADays 2015 - Jak to zrobic w JavaScript
Jacek Okrojek
 
PDF
Webpack - Czym jest webpack i dlaczego chcesz go używać? - wersja krótka
Marcin Gajda
 
PDF
Apache http server - proste i zaawansowane przypadki użycia
Wojciech Lichota
 
PDF
Wprowadzenie do języka Swift, czyli nowe podejście do programowania aplikacji...
The Software House
 
PDF
Torquebox
Przemyslaw Wroblewski
 
PDF
Paweł Kucharski: Oswajamy Słonia czyli po co nam Hadoop
AnalyticsConf
 
PDF
PLNOG 22 - Krzysztof Załęski - Praktyczne zastosowanie narzędzi NetDevOps
PROIDEA
 
PDF
Allegro Tech Talks Poznań #4: Jak przyspieszyć SOLRa w kilku prostych krokach.
allegro.tech
 
PDF
Kickoff to Node.js
The Software House
 
PPTX
ASP.NET MVC - najważniejsze założenia
Bartlomiej Zass
 
PDF
Xdebug – debugowanie i profilowanie aplikacji PHP
3camp
 
PDF
RxJava & Hystrix - Perfect match for distributed applications
allegro.tech
 
Znaki mocy dla laików – Programowanie funkcyjne w JavaScript
The Software House
 
Monitoring systemu. Dlaczego mój kardiolog jest bogatym człowiekiem?
The Software House
 
Architektura ngrx w angular 2+
Paweł Żurowski
 
Angular Restmod
Marcin Gajda
 
NSOperation(Queue)
Krzysztof Profic
 
TypeScript as a runtime error terminator
The Software House
 
Confitura 2018 - Sekretne życie jobów Sparkowych
Marcin Jasiński
 
Hugo - make webdev fun again
Marcin Gajda
 
AADays 2015 - Jak to zrobic w JavaScript
Jacek Okrojek
 
Webpack - Czym jest webpack i dlaczego chcesz go używać? - wersja krótka
Marcin Gajda
 
Apache http server - proste i zaawansowane przypadki użycia
Wojciech Lichota
 
Wprowadzenie do języka Swift, czyli nowe podejście do programowania aplikacji...
The Software House
 
Paweł Kucharski: Oswajamy Słonia czyli po co nam Hadoop
AnalyticsConf
 
PLNOG 22 - Krzysztof Załęski - Praktyczne zastosowanie narzędzi NetDevOps
PROIDEA
 
Allegro Tech Talks Poznań #4: Jak przyspieszyć SOLRa w kilku prostych krokach.
allegro.tech
 
Kickoff to Node.js
The Software House
 
ASP.NET MVC - najważniejsze założenia
Bartlomiej Zass
 
Xdebug – debugowanie i profilowanie aplikacji PHP
3camp
 
RxJava & Hystrix - Perfect match for distributed applications
allegro.tech
 
Ad

Viewers also liked (11)

PDF
Zrób dobrze swojej komórce - programowanie urządzeń mobilnych z wykorzystanie...
Sages
 
PDF
Bezpieczne dane w aplikacjach java
Sages
 
PDF
Szybkie wprowadzenie do eksploracji danych z pakietem Weka
Sages
 
PDF
Wprowadzenie do technologii Big Data / Intro to Big Data Ecosystem
Sages
 
PDF
Architektura aplikacji android
Sages
 
PDF
Wprowadzenie do technologi Big Data i Apache Hadoop
Sages
 
PDF
Codepot - Pig i Hive: szybkie wprowadzenie / Pig and Hive crash course
Sages
 
PDF
Wprowadzenie do technologii Puppet
Sages
 
PDF
Jak zacząć przetwarzanie małych i dużych danych tekstowych?
Sages
 
PDF
Wprowadzenie do Big Data i Apache Spark
Sages
 
PPTX
Vert.x v3 - high performance polyglot application toolkit
Sages
 
Zrób dobrze swojej komórce - programowanie urządzeń mobilnych z wykorzystanie...
Sages
 
Bezpieczne dane w aplikacjach java
Sages
 
Szybkie wprowadzenie do eksploracji danych z pakietem Weka
Sages
 
Wprowadzenie do technologii Big Data / Intro to Big Data Ecosystem
Sages
 
Architektura aplikacji android
Sages
 
Wprowadzenie do technologi Big Data i Apache Hadoop
Sages
 
Codepot - Pig i Hive: szybkie wprowadzenie / Pig and Hive crash course
Sages
 
Wprowadzenie do technologii Puppet
Sages
 
Jak zacząć przetwarzanie małych i dużych danych tekstowych?
Sages
 
Wprowadzenie do Big Data i Apache Spark
Sages
 
Vert.x v3 - high performance polyglot application toolkit
Sages
 
Ad

Similar to Budowa elementów GUI za pomocą biblioteki React - szybki start (20)

PDF
react-pl.pdf
ssuser65180a
 
PDF
DreamLab Academy #12 Wprowadzenie do React.js
DreamLab
 
PDF
AngularJS - podstawy
Apptension
 
PDF
React Ninja - Warsztaty TDD + React + Redux + Websockets
The Software House
 
PPTX
Introduction to ReactJS - Comparison to AngularJS 2 - Robert Piękoś (pl)
Sunscrapers
 
PDF
Magento Meetup Wrocław 6. "Venia Storefront Concept", Piotr Makowski VIRTUA
Magento Meetup Wrocław
 
PDF
Thymeleaf - szablony, które bez przetworzenia zrozumie twoja przeglądarka
Maciej Ziarko
 
PDF
Service workers - bądź online, nawet kiedy jesteś offline!
The Software House
 
PDF
NK API - Przykłady
nasza-klasa
 
PDF
Automatyzacja utrzymania jakości w środowisku PHP
Laravel Poland MeetUp
 
PDF
TWIG - niezłe widoki dla PHP
Piotr Gabryjeluk
 
PDF
Functional widgets in Rails
Sebastian Sito
 
PDF
Modularny JavaScript - meet.js
Patryk Jar
 
PDF
JavaScript, Moduły
Mariusz Nowak
 
PPTX
Optymalizacja aplikacji ASP.NET
Bartlomiej Zass
 
PPT
Mvc frontend-trug-02-2011
Rafal Piekarski
 
PPTX
Android i REST
Roman Woźniak
 
PDF
REACT NATIVE - CZYLI ZAPROGRAMUJMY APLIKACJĘ NATYWNĄ W JS
Tomasz Netczuk
 
PPTX
Środowisko testowe pod REST-a
Future Processing
 
PDF
Laravel workshops 1
Kamil Fojuth
 
react-pl.pdf
ssuser65180a
 
DreamLab Academy #12 Wprowadzenie do React.js
DreamLab
 
AngularJS - podstawy
Apptension
 
React Ninja - Warsztaty TDD + React + Redux + Websockets
The Software House
 
Introduction to ReactJS - Comparison to AngularJS 2 - Robert Piękoś (pl)
Sunscrapers
 
Magento Meetup Wrocław 6. "Venia Storefront Concept", Piotr Makowski VIRTUA
Magento Meetup Wrocław
 
Thymeleaf - szablony, które bez przetworzenia zrozumie twoja przeglądarka
Maciej Ziarko
 
Service workers - bądź online, nawet kiedy jesteś offline!
The Software House
 
NK API - Przykłady
nasza-klasa
 
Automatyzacja utrzymania jakości w środowisku PHP
Laravel Poland MeetUp
 
TWIG - niezłe widoki dla PHP
Piotr Gabryjeluk
 
Functional widgets in Rails
Sebastian Sito
 
Modularny JavaScript - meet.js
Patryk Jar
 
JavaScript, Moduły
Mariusz Nowak
 
Optymalizacja aplikacji ASP.NET
Bartlomiej Zass
 
Mvc frontend-trug-02-2011
Rafal Piekarski
 
Android i REST
Roman Woźniak
 
REACT NATIVE - CZYLI ZAPROGRAMUJMY APLIKACJĘ NATYWNĄ W JS
Tomasz Netczuk
 
Środowisko testowe pod REST-a
Future Processing
 
Laravel workshops 1
Kamil Fojuth
 

More from Sages (6)

PDF
Python szybki start
Sages
 
PDF
Budowanie rozwiązań serverless w chmurze Azure
Sages
 
PDF
Docker praktyczne podstawy
Sages
 
PDF
Jak działa blockchain?
Sages
 
PDF
Qgis szybki start
Sages
 
PDF
Architektura SOA - wstęp
Sages
 
Python szybki start
Sages
 
Budowanie rozwiązań serverless w chmurze Azure
Sages
 
Docker praktyczne podstawy
Sages
 
Jak działa blockchain?
Sages
 
Qgis szybki start
Sages
 
Architektura SOA - wstęp
Sages
 

Budowa elementów GUI za pomocą biblioteki React - szybki start

  • 1. Budowa elementów GUI za pomocą biblioteki React Tomek Sułkowski
  • 2. about.md • Prowadzący: • Tomek Sułkowski
 Front-end Developer
 Trener IT
  • 3. about.md • Agenda: • Wprowadzenie / kontekst / narzędzia • Teoria / demo • Warsztat • Teoria / demo • Warsztat • … • Q & A
  • 5. Node Package Manager • system zarządzania zależnościami dla server-side js i client-side js • zależności opisywane z dokładnością do wersji w pliku package.json 
 (nowy projekt tworzymy przez npm init) • npm install
 - instaluje pakiety, których jeszcze nie ma w projekcie • npm update 
 - sprawdza, czy istnieją nowsze wersje pakietówinstaluje • npm install nazwa-pakietu --save lub --save-dev 
 - instaluje pakiet, dodaje go do package.json przydatne skróty: 
 npm init -y , npm i -S , npm i -D
  • 6. webpack npm install webpack -g
 npm install webpack --save-dev module.exports = { entry: [ './js/index.js' ], output: { path: __dirname + '/static/', filename: 'bundle.js' }, plugins: [], module: { loaders: [ { test: /.js$/, loaders: ['babel'], exclude: /node_modules/ } ] }, resolve: { extensions: ['.js', '.json'] }, devtool: 'source-map' };
  • 7. hello React! <body> <div id="app"></div> <script src="react/0.14/react.js"></script> <script src="react/0.14/react-dom.js"></script> <script> var root = React.createElement('div', null, 'Hello React!'); ReactDOM.render(root, document.getElementById('app')); </script> </body>
  • 8. hello React! var root = React.createElement('section', null, React.createElement('h1', null, 'Lista zakupów'), React.createElement('h2', {id: 'food', className: 'subcaption'}, 'Spożywcze'), React.createElement('ul', null, ['Mleko', 'Jajka', 'Chleb'].map(function (item) { React.createElement('li', null, i), }) ) );
  • 9. hello React! var root = React.DOM.section(null, React.DOM.h1(null, 'Lista zakupów'), React.DOM.h2({id: 'food', className: 'subcaption'}, 'Spożywcze'), React.DOM.ul(null, ['Mleko', 'Jajka', 'Chleb'].map(function (item) { React.DOM.li(null, item) }); ) );
  • 10. hello JSX var root = <section> <h1>Lista zakupów</h1> <h2 id="food" className="subcaption"></h2> <ul> {['Mleko', 'Jajka', 'Chleb'].map(function (item) { return <li>{item}</li> })} </ul> </section>;
  • 11. React: component var Paragraph = React.createClass({ render: function () { return <p>{this.props.content}</p>; } }); class Paragraph extends React.Component { render() { return <p>{this.props.content}</p>; } } const Paragraph = (props) => <p>{props.content}</p>; ES5 ES6React 0.13 ES6React 0.14
  • 12. React: component class CommentBox extends React.Component { render() { return ( <div className="commentBox"> Hello, world! I am a CommentBox. </div> ); } }
  • 13. ECMAScript 2015: (aka ES6) aktualna wersja języka JavaScript
  • 14. ES2015: przydatne konstrukcje • Destructuring • Spread operator • Rest parameters • Default values • Arrow funcSons • Template literals • Object literals • Classes • Let, Const • Modules ... wypróbuj: https://babeljs.io/repl/ , http://jsbin.com, ... zobacz: https://babeljs.io/docs/learn-es2015/
  • 15. ECMAScript 2015: (aka ES6) Wsparcie w przeglądarkach…
  • 16. ES2015: narzędzia • Pisząc kod aplikacji przeglądarkowych w ECMAScript 2015 musimy go transpilować • Do wyboru: Traceur, TypeScript, Babel … ale warto*
 *szybki rozwój js, więcej możliwości już dziś, mniej boilerplate code, ...
 
 „Transpilers are here to stay”
  • 17. what the flux ? ogólny opis architektury
  • 18. what the flux ? Facebook Flux, Fluxible by Yahoo, Reflux, Alt, Flummox, Marty.js, McFly, Lux, Material Flux, Redux, Flambeau, Nuclear.js, Fluxette, Fluxxor, Freezer ogólny opis architektury implementacje:
  • 19. Redux • Niekoniecznie dla aplikacji React • Niewielki kod źródłowy • Niecałkiem flux • Lepsze możliwości hot reloading • Dynamiczny ekosystem
  • 21. Dzięki za uwagę i zapraszam na hKp://www.sages.com.pl/Budowanie-wydajnych-i- nowoczesnych-aplikacji-webowych-w-oparciu-o-React