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

  • 493