Intro to React - 2017


https://twitter.com/btmpl/
https://medium.com/@baphemot/

Bartosz Szczeciński
Czym (nie) jest ReactJS?
React NIE JEST frameworkiem
React NIE JEST aplikacją "serwerem"
React JEST biblioteką UI
React JEST punktem startu

Co React nam daje?
System zarządzania warstwą UI
(JSX, VDOM, kompozycja)
Zarządzanie danymi (stan komponentu)
Funkcje lifecycle
Ujednolicony system eventów

Swobodę doboru rozwiązań
Czego React wymaga?
Znajomości JS
(mutacje, scope, binding, event bubbling)
Autonomii w podejmowaniu decyzji
Trzymania się raz podjętych decyzji
(nie chodzimy na skróty "ten jeden raz")

Zaakceptowania pewnych decyzji
i nie walczenia z nimi - one direction data flow
React - biblioteka UI


VDOM



DOM
VDOM
VDOM


JSX



JSX

'use strict';
var App = function App() {
return React.createElement(
'div',
{ style: { maxWidth: '600px', margin: '0 auto', font: '14px/18px Tahoma, Verdana, sans-serif' } },
React.createElement(
'p',
null,
'Please start typing in the field below. You can use any string and also trigger the faceted search functionality by typing ',
React.createElement(
'b',
null,
'person:'
),
' or ',
React.createElement(
'b',
null,
'location:'
)
),
React.createElement(Search, null),
React.createElement('br', null),
React.createElement(Search, { activeFacetTemplate: CustomActiveFacet, dropdownFacetTemplate: CustomDropdownFacet })
);
};CSS



CSS




Interakcje


Interakcje




Interakcje


Abstrakcja


Abstrakcja


React, abstract, target!

Internet - React (for web)
Mobile - React Native
Desktop - React Native XP
VR - React VR
CLI - react-blessed
OpenGL - gl-react
Tools - node + npm



Tools - babel



Tools - babel


Tools - eslint





Tools - jest




Tools - webpack


1. Brak wsparcia dla ES6+ w przeglądarce
2. Brak wsparcia dla modułów w przeglądarce
3. "Kilka" modułów w każdym projekcie
4. Problem z cache, synchronizacją
Tools - webpack


Tools - webpack

1. Rozwiązywanie zależności
2. Transpilowanie kodu
3. Usuwanie martwego kodu
4. Obróbka danych binarnych
5. Generowanie statystyk
6. Optymlizacja - dzielenie kodu, zasoby współdzielone
7. Generowanie dodatkowych pod-pakietów
Tools - webpack



Tools - webpack

1. Rozwiązywanie zależności
2. Transpilowanie kodu
3. Obróbka danych binarnych
4. Generowanie statystyk
5. Optymlizacja - dzielenie kodu, zasoby współdzielone
6. Generowanie dodatkowych pod-pakietów
ES6 up to speed


React jest zły bo ...


"To tylko kolejny framework", "React, Preact, Phoenix, Inferno..."
React jest zły bo ...

"Breaking changes co 6 miesięcy", "Skok z 0.14 do 15.0"

"Kolejne API do nauczenia się"
"Restrykcyjna licencja"

React jest zły bo ...

"Chcesz włożyć swój HTML GDZIE?!"

React jest zły bo ...

JSX "Muszę?"

React jest zły bo ...

"OK, ale ... CSS w JS?"



React jest zły bo ...

"Potrzebuje 500 zależności
i 150MB w node_modules"



React jest zły bo ...

"Ale milion paczek?"

"ReactJS wymaga Webpacka, Reduxa, hot module reloads, redux-saga, action creatorów, Babel, npm, css-modules, dekoratorów, biegłej znajomości łaciny, subskrypcji eggheads.io, tytułu magistra lub oceny Przekraczający Oczekiwania
z Czaroznawstwa w Hogwarcie"
Jak zacząć?


Jak zacząć?




Jak zacząć?
Ok... może coś mniejszego


Jak zacząć?
create-react-app


Jak zacząć?
create-react-app




Jak zacząć?
create-react-app


ES6 + object spread, async/await, class properties, jsx
linter (eslint), środowisko testowania (jest, enzyme, coverage), debugger (VSC)
css modules, autoprefixer, static assets (fonty, obrazki)
webpack, webpack-dev-server
API proxy (CORS), https
wyjście awaryjne (eject)
Co dalej?
dev, build, deploy!

1. npm run build
2. ???
3. profit

Co dalej?
learn - use - refactor


https://github.com/markerikson
Co dalej?
learn - question - share

https://www.reactiflux.com/

Q & A

Intro to React 2017
By btmpl
Intro to React 2017
- 609