Architecture Decision Record

Active theme: Light

← Przykłady rejestrów decyzji

Rejestr decyzji architektonicznych: framework CSS

Spis treści:

Podsumowanie

Problem

Chcemy użyć frameworka CSS do tworzenia naszych aplikacji internetowych:

  • Chcemy, aby doświadczenie użytkownika było szybkie i niezawodne we wszystkich popularnych przeglądarkach i rozmiarach ekranu.

  • Chcemy szybkiej iteracji nad projektem, układem, UI/UX itd.

  • Chcemy aplikacji responsywnych, zwłaszcza dla mniejszych ekranów, takich jak urządzenia mobilne, większych ekranów, takich jak panoramiczne 4K, oraz ekranów dynamicznych, takich jak obracane wyświetlacze.

Decyzja

Zdecydowano się na Bulma.

Status

Zdecydowano się na Bulma. Jesteśmy otwarci na nowe wybory frameworków CSS, gdy się pojawią.

Szczegóły

Założenia

Chcemy tworzyć aplikacje internetowe, które są nowoczesne, szybkie, niezawodne, responsywne itd.

Typowe nowoczesne aplikacje internetowe ograniczają lub eliminują użycie jQuery z kilku powodów:

  • Nowoczesny JavaScript stopniowo wprowadza wiele możliwości, które zapewniało jQuery, więc jQuery jest mniej potrzebne, a istnieją lepsze/szybsze/mniejsze moduły zapewniające konkretne implementacje

  • Szerokie podejście jQuery polega na bezpośredniej manipulacji DOM, co jest antywzorcem dla nowoczesnych frameworków JavaScript (np. React, Vue, Svelte)

  • jQuery przeszkadza samo sobie, jeśli zostanie załadowane dwukrotnie itd.

Ograniczenia

Jeśli wybierzemy framework CSS, który używa jQuery, będziemy musieli importować jQuery. Na przykład Semantic UI używa jQuery, a Tachyons nie.

Jeśli wybierzemy framework CSS, który jest minimalny, zrezygnujemy z komponentów frameworka, które możemy chcieć teraz lub wkrótce. Na przykład Semantic UI zapewnia karuzelę obrazów, a Tachyons nie.

Stanowiska

Rozważaliśmy użycie braku frameworka. Nadal wydaje się to realne, zwłaszcza że CSS grid zapewnia wiele z tego, czego potrzebujemy w naszym projekcie..

Rozważaliśmy wiele frameworków CSS, używając szybkiej selekcji krótkiej listy: Bootstrap, Bulma, Foundation, Materialize, Semantic UI, Tachyons itd. Nasze dwa wybory do głębszej oceny to Semantic UI (ponieważ ma najbardziej semantyczne podejście) i Bulma (ponieważ ma najlżejsze podejście, które zapewnia komponenty, jakich teraz chcemy).

Rozważaliśmy Semantic UI. Zapewnia on wiele komponentów, w tym te, których chcemy w naszym projekcie: karty, siatki, przyciski itd. Przeprowadziliśmy pilotaż z Semantic UI na dwa sposoby: używając typowych plików z CDN i używając repozytoriów NPM. Osiągnęliśmy sukces z Semantic UI na statycznej stronie HTML, ale nie osiągnęliśmy sukcesu w ramach naszego limitu czasu przy budowie SPA w JavaScript (głównie z powodu problemów z ładowaniem jQuery). Odkryliśmy, że inni programiści proszą twórców Semantic UI o stworzenie wersji bez jQuery z tych samych powodów, co my. Inni programiści proszą o wersję bez jQuery od wielu lat, ale twórcy odmawiają i twierdzą, że każda wersja bez jQuery byłaby zbyt trudna do napisania, np. ~„projekt Semantic UI ma ponad 22 000 punktów styku, które używają jQuery”.

Przykład z Semantic:

<div class="ui top attached tabular menu">
  <a class="item">Alpha</a>
  <a class="item">Bravo</a>
</div>

Rozważaliśmy Bulma. Bulma ma wiele podobnych możliwości jak Semantic UI, choć nie tak wiele zaawansowanych komponentów. Bulma jest zbudowana nowoczesnymi technikami, np. bez jQuery. Bulma ma pewne komponenty od podmiotów trzecich, z których niektóre możemy chcieć użyć.

Przykład z Bulma:

<div class="tabs">
  <ul>
    <li><a>Alpha</a></li>
    <li><a>Bravo</a></li>
  </ul>
</div>

Argument

Jak wyżej.

W szczególności Semantic UI wydaje się mieć flagę ostrzegawczą zarówno pod względem technologii (czyli tak wiele punktów styku z jQuery), jak i przywództwa (czyli wersja bez jQuery spotkała się ze stanowczym „nie”, zamiast próby opracowania mapy drogowej, ciągłego ulepszania, zbiórki darowizn itd.).

Implikacje

Jeśli znajdziemy dobry framework CSS bez jQuery, jest to ogólnie pomocne i korzystne.

Powiązane

Powiązane decyzje

Wybrany przez nas framework CSS może wpłynąć na testowalność.

Powiązane wymagania

Chcemy szybko wydać czysto nowoczesną aplikację.

Nie chcemy tracić czasu na pracę ze starszymi frameworkami (zwłaszcza Semantic UI) używającymi starszych zależności (zwłaszcza jQuery).

Powiązane artefakty

Wpływa na cały typowy HTML, który będzie używał tego CSS.

Powiązane zasady

Łatwo odwracalne.

Potrzeba szybkości.

Notatki

Tu wszelkie notatki.