⊗jsrxPmSDIM 37 of 57 menu

Instalacja MSW do pracy z częścią serwerową w Redux

Na poprzednich zajęciach wprowadziliśmy kilka dodatkowych zmian w naszej aplikacji. Teraz musimy uporać się z serwerem, z którym nasza aplikacja będzie wymieniać dane.

Prawdziwego serwera nie będziemy mieli, więc po prostu zasymulujemy pracę z nim, używając fajnego narzędzia Mock Service Worker. Mock Service Worker (MSW) to narzędzie do imitowania API, które wykorzystuje standaryzowany API Service Worker, przeznaczony do przechwytywania żądań na poziomie sieci. MSW będzie generować fikcyjne odpowiedzi (responses) na nasze żądania (requests). Co więcej, jak twierdzą programiści, narzędzie jest tak skuteczne i elastyczne, że po debugowaniu z atrapami (dla których w aplikacji nie trzeba niczego specjalnie tworzyć), aplikację można uruchomić do pracy już z prawdziwym zewnętrznym serwerem. Dokumentacja jest dość obszerna i, jeśli zainteresujesz się MSW, możesz ją przeczytać na oficjalnej stronie.

Przejdźmy do instalacji msw. W tym celu otwórz nasz projekt z produktami i w terminalu wprowadź:

npm install msw --save-dev

Do pracy msw potrzebujemy również utworzyć i skopiować mockServiceWorker.js do jakiegoś publicznego katalogu. Często jest to folder public. My mamy pusty folder public, skopiujmy go tam. W tym celu uruchom w terminalu polecenie, a następnie zaakceptuj użycie public:

npx msw init public

Teraj zajrzyjmy do public, tam powinien pojawić się wygenerowany skrypt mockServiceWorker.js. Teraz uruchommy naszą aplikację z produktami i w pasku adresu przeglądarki wprowadź http://localhost:5173/mockServiceWorker.js (ponieważ nasza aplikacja działa na porcie 5173). Widzisz, w oknie przeglądarki wyświetliła się zawartość pliku mockServiceWorker.js? Świetnie, idziemy dalej.

Następnie utwórzmy w folderze src folder api, a w nim plik server.js, w którym będziemy pisać kod serwera. Teraz otwórzmy server.js i zaimportujmy do niego funkcję setupWorker z zainstalowanej biblioteki msw:

import { setupWorker } from 'msw/browser'

Poniżej w pliku utwórzmy zmienną worker i wyeksportujmy ją:

export const worker = setupWorker()

A teraz otwórzmy plik main.jsx i zaimportujmy do niego naszego workera:

import { worker } from './api/server'

Teraz podepnijmy go do naszej aplikacji. W tym celu kod, za pomocą którego tworzymy korzeń naszej aplikacji React, opakujemy w funkcję, nazwijmy ją main i w pierwszej linijce dodajmy do niej funkcję uruchamiania dla workera. Oczywiście nie zapomnijmy wywołać i samej main. Pełny kod po wszystkich linijkach z importem będzie teraz wyglądał tak:

async function main() { await worker.start({ onUnhandledRequest: 'bypass' }) ReactDOM.createRoot(document.getElementById('root')).render( <React.StrictMode> <Provider store={store}> <App /> </Provider> </React.StrictMode> ) } main()

Teraz jesteśmy pewni, że nasza aplikacja nie zacznie działać wcześniej (i wysyłać żądań ;) ), niż uruchomi się worker.

Uruchommy naszą aplikację i otwórzmy w przeglądarce konsolę dla programistów. Jeśli widzisz w niej tekst '[MSW] Mocking enabled.', to jesteś świetny i wszystko zainstalowałeś poprawnie!!!

Otwórz swoją aplikację ze studentami. Zapoznawszy się z materiałem z tej lekcji, zainstaluj Mock Service Worker dla swojej aplikacji.

Utwórz plik server.js, a w nim utwórz workera. Podłącz workera do aplikacji w main.js, jak pokazano w lekcji. Upewnij się, że wszystko działa.

Polski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wykorzystujemy pliki cookie do działania strony, analizy i personalizacji. Przetwarzanie danych odbywa się zgodnie z Polityką prywatności.
zaakceptuj wszystkie dostosuj odrzuć