Wybierz bibliotekę lub platformę JavaScript

W tym artykule opisujemy, jak wybrać bibliotekę lub platformę do wykorzystania w aplikacji internetowej. Dzięki tym dyskusjam łatwiej będzie Ci ocenić wady i zalety biblioteki lub platformy JavaScript, która będzie odpowiednia dla Twojego problemu biznesowego. Wiedza na temat wad i zalet w różnych sytuacjach ma kluczowe znaczenie przy sprawdzaniu dużej liczby dostępnych bibliotek JavaScript.

Co to są biblioteki i platformy JavaScript

Co to jest biblioteka JavaScript? W najprostszej postaci biblioteka JavaScript to gotowy kod, który można wywołać w kodzie projektu, aby wykonać określone zadanie.

Ten post dotyczy głównie „bibliotek”. Jednak wiele dyskusji dotyczy również zasad. Ogólnie różnice między nimi można podsumować tak:

  • W przypadku biblioteki kod aplikacji wywołuje jej kod.
  • Kod aplikacji jest wywoływany przez platformę.

Podane niżej przykłady praktyczne ilustrują te różnice.

Przykładowe wywołanie biblioteki JavaScript

Biblioteka JavaScript wykonuje określone zadanie, a następnie zwraca kontrolę do aplikacji. Gdy korzystasz z biblioteki, możesz kontrolować przepływ aplikacji i wybierać, kiedy ma ona być wywoływana.

W poniższym przykładzie kod aplikacji importuje metodę z biblioteki lodash. Gdy funkcja się zakończy, kontrola zostanie zwrócona do aplikacji.

import capitalize from 'lodash.capitalize';
capitalize('hello'); // Hello

Gdy metoda lodash.capitalize jest wykonywana, wywołuje gotowy kod JavaScript, w którym pierwszy znak w ciągu znaków jest pisany wielkimi literami.

Przykład użycia platformy JavaScript

Platforma JavaScript to wstępnie zdefiniowany szablon kodu, w którym tworzysz działanie aplikacji. Oznacza to, że gdy używasz platformy, kontroluje ona przepływ aplikacji. Aby użyć platformy, należy napisać niestandardowy kod aplikacji, a platforma wywoła ten kod.

Poniższy przykład pokazuje fragment kodu korzystający z platformy JavaScript Preact:

import { createElement } from 'preact';

export default function App() {
  return (
    <p class="big">Hello World!</p>
  )
}

Zwróć uwagę na to, że platforma ma znacznie większą kontrolę nad tworzonym przez Ciebie kodem, a w niektórych przypadkach może nawet kontrolować to, kiedy zostanie on wykonany.

Dlaczego warto korzystać z biblioteki?

Korzystając z biblioteki JavaScript, możesz uniknąć niepotrzebnego powtarzania kodu. Biblioteki potrafią eliminować złożone logiki, takie jak manipulowanie datami czy obliczenia finansowe. Biblioteka może też pomóc w wydaniu początkowego produktu. Dzięki temu unikniesz konieczności pisania całego kodu od zera, co może zająć trochę czasu.

Niektóre biblioteki JavaScriptu po stronie klienta pomagają odizolować elementy platformy internetowej. Biblioteka może też służyć jako narzędzie edukacyjne. Jeśli na przykład nie znasz funkcji wygładzania animacji, kod źródłowy biblioteki może Cię nauczyć, jak działają takie wygładzanie.

Niektóre biblioteki są wspierane przez duże firmy, które inwestują czas i pieniądze w ich aktualizowanie i bezpieczeństwo. Wiele bibliotek jest dołączonych do rozbudowanej dokumentacji, która pozwala Tobie i Twojemu zespołowi szybko zapoznać się z ich funkcjami.

Ostatecznie korzystanie z biblioteki JavaScript pozwala zaoszczędzić czas.

Dlaczego warto korzystać z biblioteki?

Aplikacje internetowe można tworzyć od podstaw, ale nie ma powodu do problemów, jeśli można skorzystać z bezpłatnego oprogramowania (open source) lub kupić rozwiązanie, które w dłuższej perspektywie pozwoli zaoszczędzić czas i pieniądze. Dostępnych jest wiele bibliotek i platform JavaScript, z których każda oferuje unikalne podejście do rozwiązywania problemów i każda z nich ma odmienne cechy. Na przykład:

  • Biblioteka może być napisana i utrzymywana wewnętrznie, a nie przez podmiot zewnętrzny.
  • Biblioteka może mieć określone licencje prawne, które uniemożliwiają jej stosowanie w aplikacjach internetowych.
  • Biblioteka może być nieaktualna lub nie być obsługiwana.
  • Dzięki bibliotece możesz uprościć zestaw złożonych zadań i oszczędzać czas oraz pieniądze.
  • Biblioteka jest powszechnie używana w społeczności i jest dobrze znana programistom.

Jak się pewnie spodziewasz, różne cechy mogą w różny sposób wpływać na Twoją aplikację internetową. Czasem decyzja nie jest zbyt szczegółowa, a jeśli biblioteka Ci się nie podoba, możesz ją bezpiecznie wymienić. Niekiedy jednak biblioteka może mieć znaczący wpływ na pracę i aplikację internetową, co sugeruje, że konieczne może być bardziej świadome podejście do tego tematu.

W niektórych środowiskach JavaScript po stronie klienta, np. na serwerze (w środowisku chmurowym) lub Raspberry Pi, może być konieczne dostosowanie kryteriów używanych do weryfikacji bibliotek i platform.

Występy

Nie należy ignorować wpływu biblioteki JavaScript na wydajność aplikacji internetowej po stronie klienta. Duża biblioteka JavaScript może zakłócać wczytywanie strony; pamiętaj, że milisekundy to miliony.

Przeanalizujmy scenariusz, w którym używasz biblioteki JavaScript do animacji. W niektórych bibliotekach można łatwo dodać dziesiątki kilobajtów, a w niektórych przypadkach nawet setki kilobajtów. Takie zasoby JavaScript mogą opóźniać wczytywanie strony, ponieważ przeglądarka musi pobrać, przeanalizować, skompilować i wykonać kod.

Im większa biblioteka JavaScript, tym większy wpływ na wydajność użytkowników.

Podczas oceniania i używania biblioteki lub platformy JavaScript weź pod uwagę te sugestie, które pomogą Ci zwiększyć skuteczność:

  • Ze względu na dużą biblioteka JavaScript rozważ użycie mniejszej wersji. Na przykład date-fns oferuje wiele funkcji w bardziej rozsądnym rozmiarze niż niektóre inne opcje.
  • Kontynuując poprzedni przykład date-fns, zaimportuj tylko potrzebne funkcje, takie jak: import { format } from 'date-fns'. Połącz to podejście z potrząsaniem drzewem, aby utworzyć i przesłać użytkownikom minimalny ładunek JavaScript.
  • Użyj narzędzi do testowania wydajności, takich jak Lighthouse, aby zaobserwować wpływ korzystania z określonej biblioteki JavaScript na wydajność. Jeśli biblioteka powoduje opóźnienie wczytywania strony o sekundę (nie zapomnij ograniczyć przepustowości sieci i procesora podczas testowania), być może trzeba będzie ponownie przeanalizować wybraną bibliotekę. Oprócz sprawdzenia wczytywania strony pamiętaj o profilowaniu wszystkich działań stron internetowych, które wywołują kod z danej biblioteki – wydajność wczytywania strony nie mówi pełnego obrazu.
  • Jeśli autor z biblioteki wyrazi na to zgodę, prześlij swoje obserwacje, sugestie, a nawet wkład w projekt. W tym przypadku wyróżnia się społeczność open source. Jeśli zdecydujesz się na przekazanie darowizny, możliwe, że musisz się najpierw skonsultować z pracodawcą.
  • używać automatycznego narzędzia do śledzenia pakietów, takiego jak bundlesize, aby obserwować, czy w bibliotece nie pojawiają się nieoczekiwanie duże zmiany w pakiecie; Biblioteka JavaScript często się rozrasta. Dodatkowe funkcje, poprawki błędów, skrajne przypadki użycia i inne elementy mogą zwiększać rozmiar pliku biblioteki. Gdy razem z zespołem zgodzicie się na korzystanie z biblioteki, jej aktualizowanie może nie stanowić większego problemu i powodować występowanie prostych pytań. W takiej sytuacji najlepiej polegać na automatyzacji.
  • Zapoznaj się z wymaganiami dotyczącymi biblioteki i oceń, czy platforma internetowa oferuje te same funkcje natywnie. Na przykład platforma internetowa oferuje już selektor kolorów, który eliminuje konieczność wdrażania tej samej funkcji przy użyciu zewnętrznej biblioteki JavaScript.

Bezpieczeństwo

Korzystanie z modułu innej firmy wiąże się z pewnymi zagrożeniami dla bezpieczeństwa. Złośliwy pakiet w bazie kodu Twojej aplikacji internetowej może zagrażać bezpieczeństwu zarówno Twojego zespołu programistów, jak i użytkowników.

Rozważmy bibliotekę opublikowaną w ekosystemie NPM. Taka przesyłka może być legalna. Jednak z czasem pakiet może zostać przejęte.

Oto kilka wskazówek dotyczących bezpieczeństwa, które warto wziąć pod uwagę podczas używania i sprawdzania kodu innej firmy:

  • Jeśli korzystasz z GitHuba, weź pod uwagę oferty zabezpieczeń kodu takie jak Dependabot. Możesz też rozważyć inne usługi, które skanują luki w kodzie, takie jak snyk.io.
  • Rozważ skorzystanie z usług kontroli kodu, czyli zespołu inżynierów, którzy mogą ręcznie kontrolować używany kod innej firmy.
  • Oceń, czy należy zablokować zależności do określonej wersji, czy zatwierdzić kod innej firmy w ramach kontroli wersji. Może to pomóc zablokować zależność do jednej konkretnej wersji, którą przypuszczalnie jest uważana za bezpieczną. Jak na ironię, może to mieć negatywny wpływ na bezpieczeństwo i może spowodować pominięcie ważnych aktualizacji biblioteki.
  • Przeskanuj stronę główną projektu lub stronę GitHuba, jeśli taka strona istnieje. Sprawdź, czy występują nierozwiązane problemy dotyczące bezpieczeństwa i czy wcześniejsze problemy z bezpieczeństwem zostały rozwiązane w rozsądnym terminie.
  • Kod firmy zewnętrznej, który wykorzystuje inny kod, może wiązać się z większym ryzykiem niż biblioteka, która ma zerowe zależności. Uważaj na to ryzyko.

Ułatwienia dostępu

Być może zastanawiasz się, jaki jest związek między bibliotekami oprogramowania a ułatwieniami dostępu w internecie. Z biblioteki oprogramowania można korzystać w różnych środowiskach, ale w kontekście biblioteki opartej na języku JavaScript po stronie klienta bardzo ważne są ułatwienia dostępu internetowe.

Biblioteka JavaScript (lub platforma) oparta na języku klienta po stronie klienta może zwiększyć lub zmniejszyć dostępność witryny. Rozważ użycie biblioteki JavaScript innej firmy, która dodaje do strony suwak obrazów. Jeśli suwak obrazów nie uwzględnia ułatwień dostępu w internecie, deweloper może przeoczyć ważną funkcję i opublikować produkt, w którym brakuje kluczowych funkcji, np. za pomocą suwaka do nawigacji za pomocą klawiatury.

  • Czy elastyczna wtyczka do typografii obsługuje użytkowników, którzy powiększają lub pomniejszają stronę?
  • Czy wtyczka do przesyłania plików obsługuje przesyłanie plików z urządzeń wspomagających?
  • Czy biblioteka animacji obejmuje użytkowników, którzy wolą korzystać z zmniejszonego ruchu?
  • Czy wtyczka do map interaktywnych obsługuje tylko klawiaturę?
  • Czy czytniki ekranu korzystają z biblioteki odtwarzacza audio?

Możesz oczekiwać, że w spełnieniu tych wymagań dotyczących ułatwień dostępu Ty, jako programista stron internetowych, będziecie potrzebowali pewnego zaangażowania. Na przykład:

  • W przypadku brakujących funkcji można je wdrożyć w swojej bazie kodu, nawet jeśli nadal korzystasz z biblioteki, której dotyczy problem.
  • Możesz przekazać brakujące materiały do biblioteki, jeśli ich autor wyrazi na to zgodę.
  • Możesz rozpocząć rozmowę z autorem biblioteki. Czy w Twoim harmonogramie znajdują się na przykład konkretne ułatwienia dostępu? Czy zgadzasz się, by znajdowały się w bibliotece?
  • W popularnych przypadkach możesz wykorzystać inne, łatwiej dostępne opcje bibliotek, które mogą występować, ale trudniej je znaleźć.
  • W skrajnym przypadku może być konieczne całkowite usunięcie biblioteki i wdrożenie funkcji od zera. Może się tak zdarzyć, jeśli biblioteka lub platforma ma gorsze ułatwienia dostępu przy pierwszym użyciu i musisz cofnąć wiele funkcji, które miałyby Ci udostępniać bezpłatnie.

Konwencje

Łatwiej korzystać z biblioteki oprogramowania, która korzysta z ustalonych konwencji kodowania. Jeśli w bibliotece stosowana jest niespotykana konwencja kodowania, Tobie i Twojemu zespołowi może być trudno pracować nad taką biblioteką.

Jeśli biblioteka nie jest zgodna z popularnymi konwencjami kodowania (na przykład według wspólnego przewodnika stylistycznego), nie jest wiele możliwości natychmiastowego rozwiązania problemu. Masz jednak kilka możliwości:

  • Pamiętaj, aby odróżnić kod źródłowy biblioteki od interfejsu API, który udostępniasz użytkownikowi biblioteki. Chociaż wewnętrzny kod źródłowy może stosować nieznane konwencje, jeśli interfejs API (część biblioteki, z której korzystasz) wykorzystuje znane konwencje, nie musisz się tym przejmować.
  • Jeśli interfejs API biblioteki nie jest zgodny z popularnymi konwencjami kodowania, możesz użyć wzorca projektu JavaScript, takiego jak wzorzec proxy, by zapakować wszystkie interakcje z biblioteką i umieścić je w jednym pliku w bazie kodu. Serwer proxy może wtedy zaoferować bardziej intuicyjny interfejs API do innych części kodu w Twojej bazie kodu.

Łatwość obsługi i konwencje odgrywają ważną rolę. Biblioteka zawierająca intuicyjny interfejs API może oszczędzić wiele godzin, a nawet dni, w porównaniu z intuicyjnym interfejsem API, który wymaga wielu eksperymentów.

Aktualizacje

Na przykład w przypadku w pełni działającej biblioteki, która wykonuje kilka obliczeń matematycznych, taka biblioteka rzadko wymaga aktualizacji. W rzeczywistości biblioteka z wszystkimi funkcjami jest rzadkim zjawiskiem w stale zmieniającym się świecie tworzenia stron internetowych. Czasem jednak chcesz, aby autor biblioteki był skłonny do wprowadzenia zmian. Nowe badania i wyniki mogą ujawnić lepsze metody wykonywania działań, dlatego techniki stosowane w bibliotekach i platformach stale się zmieniają.

Wybierając bibliotekę lub platformę, zwracaj uwagę na sposób obsługi aktualizacji i pamiętaj, że takie decyzje mogą mieć wpływ na Ciebie:

  • Czy biblioteka ma rozsądny harmonogram publikacji? Na przykład aktualizacje repozytorium kodu źródłowego mogą odbywać się często, ale jeśli nie zostaną odpowiednio „opublikowane” lub „wydane”, pobieranie ich może być trudne.
  • Czy wersja biblioteki jest aktualizowana pod kątem realistycznego schematu obsługi wersji oprogramowania? Biblioteka pozwala zaoszczędzić czas. Niespodziewana zmiana kodu przy każdej aktualizacji wersji biblioteki może uniemożliwić korzystanie z tej biblioteki. Istotne zmiany są czasami nieuniknione, ale w idealnym świecie zmiany są rzadkie i nie narzucane przez czytelników.
  • Czy biblioteka inwestuje w zgodność wsteczną? Czasami aktualizacje oprogramowania mogą powodować zmiany powodujące niezgodność, ale zapewniają też dodatkową zgodność wsteczną. Dzięki temu użytkownik biblioteki może korzystać z najnowszej wersji biblioteki przy minimalnych zmianach w kodzie.

Licencjonowanie

Licencjonowanie oprogramowania to ważny aspekt korzystania z bibliotek oprogramowania innych firm. Autor biblioteki może przypisać licencję do tej biblioteki. Jeśli rozważasz korzystanie z biblioteki, pamiętaj, że licencja może mieć zastosowanie również w Twoim przypadku.

Na przykład biblioteka JavaScript może mieć licencję na oprogramowanie, która pozwala na korzystanie z niej w środowisku niekomercyjnym. Może to być świetny wybór w przypadku osobistego projektu hobbystycznego. Jeśli Twój projekt zawiera element komercyjny, być może trzeba będzie rozważyć licencję dla przedsiębiorstw.

W razie wątpliwości możesz skorzystać z profesjonalnej porady prawnej lub zlecić to zespołowi prawnemu w swojej firmie.

Społeczność

Korzystanie z biblioteki lub platformy z dużą społecznością użytkowników/współtwórców może być korzystne, ale nie jest to gwarantowane. Ogólnie im więcej użytkowników ma biblioteka lub platforma, tym większe korzyści. Weź pod uwagę następujące wady i zalety udziału w programie rozwoju społeczności:

Zalety:

  • Duża liczba użytkowników może oznaczać większe prawdopodobieństwo wychwycenia błędów na wczesnym etapie i częstego ich występowania.
  • Duża aktywna społeczność może oznaczać większą liczbę samouczków, przewodników, filmów, a nawet kursów w ramach danej biblioteki lub platformy.
  • Duża aktywna społeczność może oznaczać większą pomoc na forach i w witrynach z pytaniami oraz odpowiedziami, co zwiększy prawdopodobieństwo udzielenia odpowiedzi na pytania do zespołu pomocy.
  • Zaangażowana społeczność może oznaczać większą liczbę zewnętrznych współtwórców biblioteki lub platformy. Pomagają też w opracowywaniu funkcji, których autor nie powinien uwzględnić w planach.
  • Gdy biblioteka lub obiekt są popularne w danej społeczności, istnieje większe prawdopodobieństwo, że Twoi koledzy i współpracownicy słyszą o takiej bibliotece lub architekturze albo nawet znają taką bibliotekę.

Wady:

  • Stale dodajemy nowe funkcje, a projekt z dużą i zróżnicowaną bazą użytkowników może znacznie wzrosnąć. Rozbudowane biblioteki mogą obniżać wydajność sieci.
  • Projekt z aktywną i zaangażowaną społecznością może być stresujący dla autorów i opiekunów oraz może wymagać intensywnej moderacji społeczności.
  • Projekt, który szybko się rozwija, ale nie ma odpowiedniego wsparcia, może wykazywać oznaki budowania toksycznej społeczności. Na przykład początkujący lub młodsi programiści mogą czuć się niemile widziani w określonej społeczności z powodu stracenia dostępu.

Dokumentacja

Niezależnie od tego, jak prosta lub złożona jest biblioteka bądź platforma JavaScript, dokumentacja oprogramowania zawsze może pomóc. Nawet doświadczeni programiści korzystają z dokumentacji, zamiast samodzielnie rozwiązywać kod. Dokumentacja wyjaśnia, których interfejsów API należy używać oraz jak z nich korzystać.

Dokumentacja może zawierać nawet przykładowy kod, co ułatwia szybkie rozpoczęcie pracy. Podczas oceniania biblioteki lub platformy możesz zadać sobie niektóre z tych pytań:

  • Czy biblioteka zawiera dokumentację? Jeśli nie, postaraj się rozwiązać je samodzielnie.
  • Czy dokumentacja jest jasna, łatwa do zrozumienia i wolna od niejasności? Wielu programistów poświęca dużo czasu na tworzenie dokumentacji. Może się to wydawać krótkie, ale czytelność dokumentacji tekstowej może mieć duży wpływ na produktywność.
  • Czy dokumentacja jest generowana automatycznie? Taka dokumentacja może być trudniejsza do zrozumienia i nie zawsze zawiera jasne wskazówki na temat korzystania z interfejsu API.
  • Czy dokumentacja jest aktualna? Czasami obsługa dokumentacji jest traktowana jako usługa wtórna. Jeśli biblioteka zostanie zaktualizowana, ale dokumentacja nie zostanie zaktualizowana, może to spędzić więcej czasu na programowaniu.
  • Czy dokumentacja jest wyczerpująca i dostępna w wielu formatach? Przewodniki użytkownika, przykładowy kod, dokumentacja, prezentacje na żywo i samouczki to cenne formaty dokumentacji, które pomogą Ci skutecznie korzystać z biblioteki lub platformy.

Dokumentacja nie zawsze jest kompletna. Musisz ocenić potrzeby swojej organizacji, wymagania związane z projektem i złożoność oprogramowania, a następnie określić odpowiedni poziom dokumentacji.

Podsumowanie

To normalne, że gdy pierwszy raz wybierzesz bibliotekę lub platformę, czujesz się przytłoczony. Tak jak w przypadku wszystkich innych rozwiązań – im więcej się czegoś nauczysz i przećwiczysz swoje zadanie, tym stajesz się lepszy. Warto skorzystać z tego posta, gdy następnym razem będziesz wybierać bibliotekę lub platformę, z której chcesz korzystać. Możesz użyć nagłówków w tym poście jako listy kontrolnej. Na przykład: czy ta biblioteka jest wydajna? Czy ta biblioteka spełnia moje standardy biznesowe w zakresie ułatwień dostępu?

Niektóre aspekty bibliotek i platform nie zostały szczegółowo omówione w tym poście:

  • Elastyczność: jak łatwo można rozszerzyć bibliotekę o niestandardowe mechanizmy i działania?
  • Narzędzia: czy biblioteka zawiera narzędzia, takie jak wtyczki edytora kodu, narzędzia do debugowania i wtyczki systemowe?
  • Architektura: czysty kod jest ważny, ale czy ogólna architektura biblioteki ma sens?
  • Testy: czy w projekcie jest dostępny pakiet testowy? Czy witryna projektu korzysta z plakietek lub wskaźników, które pakiet testowy przekazuje w porównaniu z ostatnim zatwierdzeniem?
  • Zgodność:czy biblioteka współpracuje dobrze z innymi bibliotekami i platformami, których obecnie używasz?
  • Koszt: ile kosztuje platforma? Czy jest to oprogramowanie open source czy dostępne do kupienia?
  • Wskaźniki anitarne: te wskaźniki powinny być nisko na liście kryteriów lub nawet całkowicie zignorowane. Możesz jednak wziąć pod uwagę „głosy” projektu, konta w mediach społecznościowych reprezentujących projekt lub liczbę otwartych błędów/problemów na stronie projektu.