ul. Powstańców Śląskich 7a
53-332 Wrocław
NIP 8992786490
KRS 0000608120
REGON 363987723
Global4Net Sp. z o. o.
+48 71 769 11 32
© 2009 – Global4Net. All Rights Reserved.
Webpack to bundler, czyli narzędzie, które potrafi spakować wiele różnych formatów do jednego pliku JavaScript. Nada mu rozszerzenie .js, a zrobi to poprzez przekształcenie i minifikację niepotrzebnego kodu.
Jeśli jesteś w trakcie budowy dużej aplikacji ze skomplikowanym frontendem, która posiada wiele obrazów, fontów, elementów CSS, to Webpack znacznie ułatwi Ci pracę. Jeśli jednak aplikacja, nad którą pracujesz, jest mała, czyli opierać się będzie na jednym pliku JavaScript, bez obrazów, to Webpack może tylko komplikować pracę.
Webpack tworzy dla Ciebie dependency graph. Jest to zasada matematyczna, w której zależności obiektów różnego pochodzenia lączą się.
W praktyce kodowania oznacza to lepsze rozwiązanie niż te stosowane dawniej. Kiedyś zależności JavaScriptu układało się w określonej kolejności. Kolejną metodą było sprzęganie i minifikacja skryptów poleceniem build. Rozwiązanie wciąż dalekie od idealnego, ponieważ w dalszym ciągu polega ono na ręcznym ustalaniu kolejności łączonych plików. Co więcej, z tego powodu kod mógł komunikować się tylko przez zmienne globalne.
Teraz jednak można używać modułów CommonJS lub ES6, aby stworzyć wyżej wymieniony dependency graph. Używa się małych plików, które same określają swoje potrzeby. Przeglądarka, która nie wspiera polecenia require() wykorzysta plik po spakowaniu przez Webpacka i będzie w stanie z nim współpracować.
Istnieją oczywiście narzędzia takie, jak Browserify, które rozwiązują ten problem. W czym jednak lepszy będzie Webpack?
Webpack pozwala używać polecenia require() w lokalnych zasobach stałych, czyli w plikach, które nie są JavaScript. Jeśli użyjesz Webpacka, wyszuka on w kodzie wszystkie wezwania require() i wyśle je do fileloadera. Ten z kolei zamieni require() na URL. Możesz skonfigurować w Webpacku rodzaj URL-a, jaki ma powstać. Oprócz tego fileloader załaduje plik do ustalonego folderu. Po wgraniu zawartości folderu do CDNa (Content Delivery Network) i po uruchomieniu kodu, obraz z pewnością załaduje się na stronie www.
Co ważne Webpack nie tylko stworzy plik JavaScirpt. Może również stworzyć kopie zasobów stałych na określoną przez Ciebie lokalizację zewnętrzną. Oprócz tego Webpack stworzy plik JavaScript w taki sposób, aby require() nigdy nie musiało być użyte w przeglądarce. Zamieni polecenie na skrypt Javascript i dopiero on zostanie wykorzystany.
Grunt i Gulp to narzędzia do pracy z plikami i nie mają zdolności tworzenia prawdziwego dependency graph. Browserify z kolei to narzędzie do przekształcania require() do poleceń wywołania działających w przeglądarce. Tworzy on dependency graph jedynie dla kodu źródłowego. Webpack łączy te cechy.
Nie ma sensu ukrywać, że rozwiązanie to ma swoje wady.
Dev server to wbudowana aplikacja dla kodowania lokalnego. Umożliwia ona podgląd zmian w kodzie w czasie rzeczywistym, za darmo. W przypadku dużych projektów taka pomoc jest nieoceniona.
Tradycyjne programowanie na frontendzie polega jedynie na zmiennych globalnych. Reguły CSS istnieją w globalnej przestrzeni nazw. Ich stosowanie polega na ręcznym ustawianiu selektorów. Bardzo trudno się nie pomylić w przypadku globalnie definiowanych reguł lub obrazów. Dependency graph przychodzi z pomocą w formie Webpacka. Automatyzacja tego procesu w przypadku dużego projektu może okazać się ogromną oszczędnością czasową, nawet jeśli wymaga wcześniejszej konfiguracji.
Od początku 2022 roku wchodzimy w skład Unity Group. Teraz zapisując się do naszego newslettera, będziesz na bieżąco z informacjami całej naszej organizacji.