Skip to content

Latest commit

 

History

History
19 lines (13 loc) · 4.06 KB

File metadata and controls

19 lines (13 loc) · 4.06 KB

Biblioteki JSowe, które warto znać - „helper functions”

(oryginalnie opublikowane na https://ohmydev.pl/post/biblioteki-jsowe-ktore-warto-znac-helper-functions-4ii6)

Hej,

Wpisem tym zacznę prawdopodobnie małą serię, krótkich wpisów, gdzie będę pisać swoje polecajki bibliotek JavaScriptowych, które zwykle używam w projektach i jestem w stanie każdemu zarekomendować. Prawdopodobnie w każdym wpisie będę ograniczać się do 3 poleceń + wartej uwagi alternatywy, tak jak też to robię tutaj.

Na sam początek, chciałem się skupić na bardzo ogólnie rozumianej przeze mnie kategorii „helper functions”. Są to biblioteki, które zwykle z automatu dodaję do projektu i podświadomie traktuję je niemalże jak część biblioteki standardowej JSa.

  • Lodash (oficjalna strona, NPM) — moim zdaniem gigant, jeżeli chodzi o mnogość dostępnych funkcji ułatwiających operację na wielu wbudowanych typach i strukturach danych. Na pewno na uwagę tutaj zasługuje też, że bibliotekę możemy używać w sposób funkcyjny i też dostarcza funkcje ułatwiające programowanie funkcyjne (flow, curry).
    • Alternatywa: Ramda (oficjalna strona, NPM) — chyba najbardziej znany JSowy przybornik do programowania funkcyjnego. Daję tutaj, ponieważ również oferuje dużo funkcji do operacji na typach danych, podobne do tych, co Lodash. Nie umiem tutaj wskazać co lepsze, po prostu Lodasha częściej używałem.
    • Przyszłość: standard ECMAScript jest regularnie rozbudowywany o nowe funkcje dla wbudowanych typów danych, dzięki którym z czasem potrzeba na takie biblioteki jak Lodash czy Ramda zniknie. Z ciekawszych aktualnie rozważanych można wymienić: iterator helpers, array grouping, pattern matching.
  • date-fns (oficjalna strona, NPM) — trochę taki Lodash wyspecjalizowany pod obsługę dat. Wyróżnia się od konkurencji przede wszystkim tym, że działa na JSowym obiekcie Date, nie dodaje własnych abstrakcji jak np. Moment. Do tego, również ma wersję funkcyjną, która idealnie współgra z Lodashowym flow. Bibliotekę opisywałem już wcześniej tutaj: Data i czas w JavaScript
    • Alternatywa: day.js (oficjalna strona, NPM) — biblioteka, która powstała jako lekki sposób na zastąpienie Moment w projektach. Jak wiadomo, Moment jest już deprecated, jednak wciąż jest szeroko używany, a day.js posiada niemal identyczne API, więc w większości przypadków możemy bezproblemowo podmienić import. Niestety z racji tego, czym miał być, powiela (moim zdaniem) wadę Momentu — używa własny typ danych do przechowywania daty.
    • Przyszłość: jest propozycja, aby JavaScript posiadał obiekt Temporal, który rozbuduje obiekt Date o dodatkowe funkcje: https://tc39.es/proposal-temporal/docs/index.html. Nie pokryje to wszystkiego, co oferuje date-fns, ale chociażby wbudowana obsługa stref czasowych zdecydowanie zmniejszy rozmiar appek.
  • validator.js (Github, NPM) — wbrew nazwie, nie jest to kolejny framework do walidacji formularzy w stylu Yupa. Jest to biblioteka funkcji, które umożliwiają walidację oraz czyszczenie danych, jednak są to po prostu luźne funkcje, które możemy używać, gdziekolwiek chcemy. Często warto to stosować zamiast własnych regexów (np. dużo funkcji zawiera wersje pod konkretne regiony, o czym nie raz się zapomina, robiąc sprawdzanie na własną rękę).

Jak macie jakieś własne ulubione biblioteki z przydatnymi helperami, które stosujecie w projektach, albo znacie inne warte uwagi alternatywy tutaj wymienionych, dajcie znać w komentarzach :)