Architecture Decision Record

Active theme: Light

← Príklady záznamov rozhodnutí

Záznam architektonického rozhodnutia: CSS framework

Obsah:

Zhrnutie

Problém

Chceme na tvorbu našich webových aplikácií používať CSS framework:

  • Chceme, aby bol používateľský zážitok rýchly a spoľahlivý vo všetkých populárnych prehliadačoch a veľkostiach obrazovky.

  • Chceme rýchlu iteráciu dizajnu, rozloženia, UI/UX atď.

  • Chceme responzívne aplikácie, najmä pre menšie obrazovky, ako sú mobilné zariadenia, väčšie obrazovky, ako sú 4K širokouhlé, a dynamické obrazovky, ako sú otočné displeje.

Rozhodnutie

Rozhodli sme sa pre Bulmu.

Stav

Rozhodnuté pre Bulmu. Sme otvorení novým voľbám CSS frameworkov, keď sa objavia.

Podrobnosti

Predpoklady

Chceme vytvárať webové aplikácie, ktoré sú moderné, rýchle, spoľahlivé, responzívne atď.

Typické moderné webové aplikácie obmedzujú/eliminujú používanie jQuery z viacerých dôvodov:

  • Moderný JavaScript postupne zavádza mnohé schopnosti, ktoré poskytoval jQuery, takže jQuery je menej potrebný a existujú lepšie/rýchlejšie/menšie moduly, ktoré poskytujú konkrétne implementácie

  • Široký prístup jQuery spočíva v priamej manipulácii s DOM, čo je anti-vzor pre moderné JavaScriptové frameworky (napr. React, Vue, Svelte)

  • jQuery sám sebe prekáža, ak sa načíta dvakrát atď.

Obmedzenia

Ak zvolíme CSS framework, ktorý používa jQuery, sme nútení importovať jQuery. Napríklad Semantic UI používa jQuery a Tachyons nie.

Ak zvolíme CSS framework, ktorý je minimálny, vzdávame sa komponentov frameworku, ktoré možno chceme teraz alebo čoskoro. Napríklad Semantic UI poskytuje karusel obrázkov a Tachyons nie.

Pozície

Zvažovali sme použitie žiadneho frameworku. To sa stále zdá byť životaschopné, najmä preto, že CSS grid poskytuje veľkú časť toho, čo pre náš projekt potrebujeme..

Zvažovali sme mnohé CSS frameworky rýchlym triedením do užšieho výberu: Bootstrap, Bulma, Foundation, Materialize, Semantic UI, Tachyons atď. Naše dva výbery na hlbšie preskúmanie sú Semantic UI (pretože má najsémantickejší prístup) a Bulma (pretože má najľahší prístup, ktorý poskytuje komponenty, ktoré chceme teraz).

Zvažovali sme Semantic UI. Ten poskytuje mnoho komponentov vrátane tých, ktoré pre náš projekt chceme: karty, mriežky, tlačidlá atď. Urobili sme pilot so Semantic UI dvoma spôsobmi: pomocou typických súborov CDN a pomocou repozitárov NPM. Dosiahli sme úspech so Semantic UI v statickej HTML stránke, ale v rámci nášho časového limitu sme nedosiahli úspech pri budovaní JavaScriptového SPA (primárne kvôli problémom s načítaním jQuery). Zistili sme, že iní programátori žiadajú vývojárov Semantic UI o vytvorenie verzie bez jQuery z rovnakých dôvodov ako my. Iní programátori žiadajú verziu bez jQuery už mnoho rokov, no vývojári to odmietli a uviedli, že akákoľvek verzia bez jQuery by bola príliš ťažká na napísanie, napr. ~„projekt Semantic UI má viac ako 22 000 dotykových bodov, ktoré používajú jQuery“.

Príklad so Semantic:

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

Zvažovali sme Bulmu. Bulma má mnohé podobné schopnosti ako Semantic UI, hoci nie toľko sofistikovaných komponentov. Bulma je vybudovaná modernými technikami, napríklad bez jQuery. Bulma má niektoré komponenty tretích strán, z ktorých niektoré by sme mohli chcieť použiť.

Príklad s Bulmou:

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

Argument

Ako vyššie.

Konkrétne, Semantic UI sa zdá mať varovný príznak tak z hľadiska technológie (t. j. toľko dotykových bodov s jQuery), ako aj z hľadiska vedenia (t. j. verzia bez jQuery bola tvrdé nie, namiesto pokusu o plán vývoja, nepretržité zlepšovanie, zbieranie darov atď.).

Dôsledky

Ak nájdeme dobrý CSS framework bez jQuery, je to vo všeobecnosti užitočné a dobré.

Súvisiace

Súvisiace rozhodnutia

CSS framework, ktorý zvolíme, môže ovplyvniť testovateľnosť.

Súvisiace požiadavky

Chceme rýchlo dodať čisto modernú aplikáciu.

Nechceme tráviť čas prácou so staršími frameworkmi (najmä Semantic UI), ktoré používajú staršie závislosti (najmä jQuery).

Súvisiace artefakty

Ovplyvňuje všetok typický HTML, ktorý bude CSS používať.

Súvisiace princípy

Ľahko vratné.

Potreba rýchlosti.

Poznámky

Akékoľvek poznámky tu.