Zaczynam pracę z webpack
ze node/express
środowiskiem rozwijającym się ReactJS
po stronie serwera aplikacji ze świadczonych react-router
. Jestem bardzo zdezorientowany co do roli każdego pakietu webpack w środowiskach deweloperskich i prod (runtime).
Oto podsumowanie mojego zrozumienia:
webpack
: Jest pakietem, narzędziem do łączenia różnych elementów aplikacji internetowej i umieszczania ich w jednym pliku .js (zwykle bundle.js
). Plik wynikowy jest następnie udostępniany w środowisku produkcyjnym w celu załadowania przez aplikację i zawiera wszystkie niezbędne komponenty do uruchomienia kodu. Funkcje obejmują zmniejszanie kodu, minifikację itp.
webpack-dev-server
: To pakiet oferujący serwerowi przetwarzanie plików witryny internetowej. Tworzy również pojedynczy plik .js ( bundle.js
) z komponentów klienta, ale podaje go w pamięci. Ma również opcję ( -hot
), aby monitorować wszystkie pliki budowania i budować nowy pakiet w pamięci w przypadku zmian w kodzie. Serwer jest obsługiwany bezpośrednio w przeglądarce (np.:) http:/localhost:8080/webpack-dev-server/whatever
. Połączenie ładowania pamięci, przetwarzania na gorąco i obsługi przeglądarki pozwala użytkownikowi zaktualizować aplikację w przeglądarce, gdy zmienia się kod, co jest idealne dla środowiska programistycznego.
Jeśli mam wątpliwości co do powyższego tekstu, to naprawdę nie jestem pewien co do treści poniżej, więc w razie potrzeby proszę o informację
Częstym problemem podczas używania programu webpack-dev-server
z node/express
jest to, że webpack-dev-server
jest to serwer node/express
. To sprawia, że to środowisko jest trudne do uruchomienia zarówno klienta, jak i kodu węzła / ekspresu (API itp.). UWAGA: To jest to, z czym miałem do czynienia, ale wspaniale byłoby zrozumieć, dlaczego dzieje się to bardziej szczegółowo ...
webpack-dev-middleware
: Jest to oprogramowanie pośredniczące z tymi samymi funkcjami webpack-dev-server
(łączenie w pamięci, ponowne ładowanie na gorąco), ale w formacie, który można wstrzyknąć do server/express
aplikacji. W ten sposób masz swego rodzaju serwer (the webpack-dev-server
) insider the node server. Ups: Czy to szalony sen ??? Jak ten kawałek może rozwiązać równanie deweloperskie i prod i uprościć życie
webpack-hot-middleware
: To ... Utknąłem tutaj ... znalazłem ten kawałek, szukając webpack-dev-middleware
... Nie mam pojęcia, jak go użyć.
ENDNOTE: Przepraszam, czy jest jakieś błędne myślenie. Naprawdę potrzebuję pomocy, aby zrozumieć te warianty w złożonym środowisku. Jeśli jest to wygodne, dodaj więcej pakietów / danych, które utworzą cały scenariusz.
webpack-dev-middleware
(i potencjalniewebpack-hot-middleware
), gdybyś chciał napisać własny niestandardowy serwer programistyczny. Jeśli nie ma określonej funkcji, której chcesz, awebpack-dev-server
której nie masz, powinieneś po prostu jej użyć.Odpowiedzi:
webpack
Jak już opisałeś, Webpack jest pakietem modułów, zawiera różne formaty modułów, głównie po to, aby można je było uruchomić w przeglądarce. Oferuje zarówno CLI, jak i Node API .
webpack-dev-middleware
Oprogramowanie pośredniczące Webpack Dev to oprogramowanie pośredniczące, które można zainstalować na serwerze ekspresowym w celu obsługi najnowszej kompilacji pakietu podczas programowania. Używa
webpack
Node API w trybie obserwacyjnym i zamiast przesyłać dane do systemu plików, wysyła do pamięci .webpack-dev-server
Webpack Dev Server sam w sobie jest serwerem ekspresowym , który
webpack-dev-middleware
obsługuje najnowszy pakiet i dodatkowo obsługuje żądania wymiany modułów na gorąco (HMR) dla aktualizacji modułów na żywo w kliencie.webpack-hot-middleware
Webpack Hot Middleware jest alternatywą dla
webpack-dev-server
samego serwera, ale zamiast uruchamiać sam serwer, umożliwia zamontowanie go na istniejącym / niestandardowym serwerze ekspresowym obokwebpack-dev-middleware
.Również...
webpack-hot-server-middleware
Wystarczy mylić rzeczy nawet więcej, istnieje również WebPACK Hot Server Middleware, który jest przeznaczony do stosowania u boku
webpack-dev-middleware
iwebpack-hot-middleware
do obsługi wymiany gorącą moduł serwera wygenerowana aplikacji.źródło
Od aktualizacji w 2018 roku i biorąc pod uwagę uwagę dotyczącą webpack-dev-server na oficjalnej stronie GitHub:
Jaki byłby naturalny wybór przy tworzeniu webpacka HMR?
źródło
Use webpack-serve for a fast alternative. Use webpack-dev-server if you need to test on old browsers.
możesz chcieć wypróbować usługę webpack .