Narzędzia developerskie
W zasadzie wszystkie niezbędne narzędzia są udostępniane jako open source.
Należą do nich:
NodeJS wraz z komponentami: babel, webpack, gulp, yarn
Edytor Atom i/lub Visual Studio Code (VSC)
Kontroler składni Flow (dodatek do edytora Atom)
Dodatki do przeglądarek Chrome i Firefox
Musimy to dodać pewne wyjaśnienie związane z kontroąi składni. Środowisko to dynamicznie się rozwija. W chwili gdy rozpoczęto pracę nad tym podręcznikiem - wydawało się, że stworzony przez Microsoft TypeScript jest związany z projektem Angular i mamy dwa konkurujące ze sobą środowiska: Angular + TypeScript + VSC, albo ReactJS + Atom + Flow. Atrakcyjność języka TypeScript sprawia, że jest on bardzo chętnie wykorzystywany do tworzenia aplikacji React. Dlatego optymalne wydaje się zestawienie: ReactJS+VSC+TypeScript.
Atom + Flow
Przygotowanie środowiska Atom.
1) Pełne środowisko to uruchomiony z terminala program (np. komendą yarn start), przeglądarka (typowo na adresie http://localhost:3000/) i edytor (Atom).
Zmiany wprowadzone w edytorze są zazwyczaj wychwytywane przez program i powodują odświeżenie widoku w przeglądarce.
2) W środowisku Atom możemy zainstalować paczki umożliwiające obsługę Flow. W edytorze naciskamy Ctrl + Shift + P i wpisujemy Installed Packages. Odszukujemyodpowiedną paczkę i instalujemy ją. Pakiety możemy też instalować z konsoli poleceniem apm (alternatywa dla Ctrl+Shift+P:Settings → Install).
Instalacja dodatków do Atom:
apm install atom-ide-ui
apm install ide-flowtype
apm install linter-flow
Paczka atom-ide-ui pozwala wyświetlić okienko Diagnostics (Alt+Shift+D). Obsługę flow zawiera linter-flow (alternatywą może być na przykład flow-ide. Z kolei ide-flowtype zawiera wyekstrachowane z Nuclide funkcje związane z Flow. Nie zaleca się równoczesnego instalowania równocześnie różnych pkietów IDE (https://flow.org/en/docs/editors/atom/ ).
Można natomiast zainstalować prettier-atom, który pomaga w formatowaniu tekstu.
apm install prettier-atom
Klawisze skrótu dla Atom: https://github.com/nwinkler/atom-keyboard-shortcuts
3). W katalogu aplikacji musi istnieć plik .flowconfig. Tworzymy go poleceniem flow init – po uprzednim zainstalowaniu flow-bin (na przykład yarn add flow-bin).
Instalowanie i uruchomienie Flow:
yarn add --dev flow-bin
yarn flow init
albo:
npm i -D flow-bin && flow init
Możemy uruchomić kontrolę flow z konsoli:
yarn run flow
4) W pliku, który chcemy poddać analizie flow dodajemy na początku komentarz:
//@flow
Zapisanie pliku z takim komentarzem powoduje jego analizę. W razie błędów po lewej stronie u dołu edytora pojawia się czerwony wykrzyknik. Kliknięcie otwiera okienko „Diagnostics” w którym widzimy spis błędów.
W razie potrzeby restartujemy edytor: Ctrl+Shift+F5 .
Więcej informacji:
- https://github.com/steelbrain/flow-ide
- https://flow.org/en/docs/editors/atom/
- https://medium.com/@fastphrase/integrating-flow-into-a-react-project-fbbc2f130eed
React Native:
https://medium.com/react-native-training/getting-started-with-react-native-and-flow-d40f55746809
Inne dodatki:
Visual Studio Code
Konfiguracja jest o wiele prostsza. Po zainstalowaniu edytora (można nawet użyć wersji Portable) jest on w zasadzie gotowy do tworzenia aplikacji ReactJS. Istnieje wiele poradników opisujących jak wystartować (choć nie ma w tym nic trudnego). Na przykład: https://code.visualstudio.com/docs/nodejs/reactjs-tutorial (w języku angielskim) kub https://cezarywalenciuk.pl/blog/programing/post/visual-studio-code-i-reactjs--jak-zaczac-z-gotowym-szablonem (po polsku).
Użycie ReactJS
Do tworzenia nowej aplikacji React można wykorzystać skrypt create-react-app
jak pokazano poniżej - w rozdziale "Praktyczny przykład". Poniższe uwagi można w takim wypadku pominąć. Przydadzą się, gdy chcemy dostosować środowisko do swoich potrzeb, albo po prostu lepiej zrozumieć jak to działa.
Aby zainstalować React do testów w środowisku NodeJS powinniśmy po kolei:
Utworzyć katalog na nasze skrypty (na przykład r0)
Zainstalować paczki:
yarn init yarn add --save-dev babel babel-cli babel-preset-react react
- Utworzyć plik .babelrc (dla translatora Babel) z zawartością: { "presets": ["react"] }
Testujemy:
Tworzymy skrypt jsx – na przykład r01c.jsx
Dokonujemy translacji: babel r01c.jsx > r01c.js
Testujemy: node r01c.js
UWAGA! Babel tworzy skrypty, które mogą być uruchamiane w środowisku NodeJS. Jeśli zechcemy umieścić uzyskany skrypt na stronie internetowej, okaże się - że przeglądarka nie interpretuje użytej instrukcji require(). By temu zapobiec - musimy przetworzyć plik programem browserify (http://browserify.org/
babel r03.jsx > r03x.js
browserify r03x.js -o r03.js
Ponieważ browserify dołącza pliki React - nie musimy ich odrębnie umieszczać na stronie.
Wszystkie te czynności mogą być automatycznie wykonane przez programy typu webpack czy gulp (będzie jeszcze o tym mowa).
Po dołączeniu do strony translatora babel, możemy na niej umieszczać także skrypty JSX:
<!DOCTYPE html>
<html>
<head>
<script crossorigin
src="https://unpkg.com/react@16/umd/react.production.min.js">
</script>
<script crossorigin
src="https://unpkg.com/react-dom@16/umd/react-dom.production.min.js">
</script>
<script
src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.34/browser.js">
</script>
</head>
<body>
<div id="root"></div>
<script type="text/babel">
class Hello extends React.Component {
render() {
return <span>Witaj {this.props.text}!!</span>
}
}
const App = () => (
<div>
<Hello text="ŚWIAT" />
</div>
);
ReactDOM.render(<App />, document.getElementById('root'));
</script>
</body>
</html>
Trzeba jednak wziąć pod uwagę to, że tak zbudowana strona będzie stosunkowo "ciężka".