>_ DevTrendspl

Język

Strona główna

Języki

Sekcje

Frontend Backend Mobilne DevOps AI / ML GameDev Blockchain Systemy wbudowane Bezpieczeństwo
JavaScript

Historia i upadek Create React App, legendy tworzenia stron internetowych

Pamiętasz 2016? Próba szybkiego stworzenia prostego projektu React była wtedy jak składanie szafki bez instrukcji. Musiałeś ręcznie konfigurować Webpack, ustawiać Babel, pisać konfiguracje dla loaderów CSS i konfigurować lokalny serwer deweloperski. Przygotowanie środowiska zajmowało cały dzień, mimo że nie napisałeś ani jednej linijki kodu swojej aplikacji.

Następnie Facebook wydał Create React App (CRA). Pojedyncze polecenie npx create-react-app my-app generowało gotowy do pracy projekt. Bez monitów, bez okien dialogowych, bez tysięcy linii konfiguracji.

Dziś to narzędzie zostało oficjalnie oznaczone jako przestarzałe i odesłane na długoterminową emeryturę. Dokumentacja Reacta bezpośrednio zaleca przejście na alternatywy takie jak Vite czy Next.js. Przyjrzyjmy się, jak CRA zrewolucjonizowało branżę frontendową, co kryło się pod maską i dlaczego jego era dobiegła końca.

Logo Create React App

Co robiło Create React App

Idea narzędzia wpisywała się w koncepcję „zero-konfiguracji". Deweloper otrzymywał działający stack bez konieczności zagłębiania się w ustawienia narzędzi budowania.

Cała infrastruktura była ukryta w jednym pakiecie — react-scripts. Była to czarna skrzynka zawierająca Webpack, Babel, ESLint i PostCSS.

Szybki start wyglądał tak:

npx create-react-app my-app
cd my-app
npm start

Po około trzydziestu sekundach strona otwierała się w przeglądarce pod adresem http://localhost:3000.

Demo uruchomienia CRA

Struktura katalogów była niezwykle czysta. Brak plików .babelrc czy webpack.config.js w korzeniu:

my-app
├── README.md
├── node_modules
├── package.json
├── public
   ├── favicon.ico
   ├── index.html
   └── manifest.json
└── src
    ├── App.css
    ├── App.js
    ├── App.test.js
    ├── index.css
    └── index.js

Jak to działało pod maską

CRA zostało zbudowane na trzech zasadach: pojedyncza zależność budowania, zero początkowej konfiguracji i polecenie ucieczki.

Pojedyncza zależność

Wcześniej aktualizacja narzędzi zamieniała się w piekło. Zaktualizujesz Webpack — Babel się psuł. Zaktualizujesz Babel — przestawał działać plugin ESLint.

W CRA za wszystko odpowiadał react-scripts. Aktualizacja tej jednej biblioteki aktualizowała cały łańcuch budowania pod spodem. Zawierał:

  • Wsparcie dla JSX, ES6+ i TypeScript out of the box
  • Automatyczne wstrzykiwanie prefiksów dostawców w CSS przez Autoprefixer
  • Interaktywne uruchamianie testów z Jest i obserwowanie plików
  • Nakładki błędów budowania bezpośrednio w przeglądarce

Jeśli zrobiłeś literówkę w składni, CRA pokazywał czytelny ekran wskazujący dokładną linię i znak:

Nakładka błędu w CRA

Mechanizm eject

Co jeśli domyślna konfiguracja nie była wystarczająca? Powiedzmy, że potrzebowałeś rzadkiego pluginu do przetwarzania określonych typów plików.

W takich przypadkach twórcy dodali polecenie npm run eject. Dosłownie wywracało projekt na nice: usuwało react-scripts i kopiowało setki linii konfiguracji Webpack i Babel prosto do twojego projektu.

To była jednokierunkowa podróż. Nie było sposobu, żeby wrócić do czystej struktury, a musiałeś sam utrzymywać ten rozbudowany bałagan konfiguracyjny.

Dlaczego Create React App stało się przestarzałe

Czas pracował przeciwko CRA. Technologie poszły do przodu, a architektoniczne decyzje narzędzia zamieniły się w słabości.

Po pierwsze, szybkość. Webpack przebudowuje i analizuje cały projekt od zera przy uruchamianiu serwera deweloperskiego. Gdy projekt rośnie do setek komponentów, uruchomienie i hot reload trwają dziesiątki sekund. Vite, który pojawił się później, używa natywnych modułów ES przeglądarki i buduje kod w locie dzięki błyskawicznemu kompilatorowi Go — esbuild.

Po drugie, przesunięcie w kierunku SSR i komponentów serwera. CRA mogło budować tylko aplikacje jednostronicowe (SPA) zorientowane na klienta — pusty plik HTML, który wypełniał się skryptami w przeglądarce użytkownika. Dobry SEO i szybki pierwszy paint wymagały renderowania po stronie serwera, czego CRA po prostu nie mogło zapewnić.

Po trzecie, rozdęty rozmiar. Folder node_modules dla świeżo utworzonego projektu ważył setki megabajtów, a instalacja zależności trwała kilka minut nawet na szybkim łączu.

Co używać zamiast CRA

Oficjalny przewodnik Reacta daje jasne wskazówki:

  • Vite — jeśli potrzebujesz szybkiej SPA, projektu hobbystycznego lub osobistego bloga bez renderowania po stronie serwera. Uruchamia się w milisekundach i działa zauważalnie szybciej.
  • Next.js lub Remix — jeśli budujesz pełnoprawną aplikację produkcyjną z SSR, routingiem, optymalizacją obrazów i komponentami serwera.
  • Expo — jeśli planujesz pisać wieloplatformową aplikację mobilną z React Native.

Pamięć o legendzie

Create React App zrobiło najważniejszą rzecz: ustanowiło wysoki standard Developer Experience. Pokazało całej branży, że budowanie aplikacji webowej może być proste i nie wymagać głębokiej znajomości Webpacka już pierwszego dnia pracy.

Zaczynanie nowych poważnych projektów na CRA dzisiaj nie ma praktycznej wartości. Ale jeśli natkniesz się na trzyletni tutorial lub będziesz musiał szybko uruchomić sandbox — CRA nadal będzie działać.

Powiązane projekty