Architecture Decision Record

Active theme: Light

← Primeri zapisov odločitev

Zapis arhitekturne odločitve: ogrodje CSS

Vsebina:

Povzetek

Vprašanje

Za ustvarjanje naših spletnih aplikacij želimo uporabiti ogrodje CSS:

  • Želimo, da je uporabniška izkušnja hitra in zanesljiva v vseh priljubljenih brskalnikih in velikostih zaslonov.

  • Želimo hitro iteracijo oblikovanja, postavitve, UI/UX itd.

  • Želimo odzivne aplikacije, zlasti za manjše zaslone, kot so mobilne naprave, večje zaslone, kot so širokozaslonski 4K, in dinamične zaslone, kot so vrtljivi zasloni.

Odločitev

Odločili smo se za Bulmo.

Stanje

Odločili smo se za Bulmo. Odprti smo za nove izbire ogrodij CSS, ko se pojavijo.

Podrobnosti

Predpostavke

Želimo ustvariti spletne aplikacije, ki so sodobne, hitre, zanesljive, odzivne itd.

Tipične sodobne spletne aplikacije zmanjšujejo/odpravljajo uporabo jQuery zaradi več razlogov:

  • Sodobni JavaScript postopno uvaja mnoge zmožnosti, ki jih je zagotavljal jQuery, zato je jQuery manj potreben, obstajajo pa boljši/hitrejši/manjši moduli, ki zagotavljajo posebne izvedbe

  • Široki pristop jQuery je neposredno upravljanje DOM, kar je protivzorec za sodobna ogrodja JavaScript (npr. React, Vue, Svelte)

  • jQuery moti samega sebe, če je naložen dvakrat itd.

Omejitve

Če izberemo ogrodje CSS, ki uporablja jQuery, smo prisiljeni uvoziti jQuery. Na primer, Semantic UI uporablja jQuery, Tachyons pa ne.

Če izberemo ogrodje CSS, ki je minimalno, se odpovemo komponentam ogrodja, ki jih morda želimo zdaj ali kmalu. Na primer, Semantic UI ponuja vrtiljak slik, Tachyons pa ne.

Stališča

Preučili smo možnost brez ogrodja. To se še vedno zdi izvedljivo, zlasti ker CSS grid zagotavlja velik del tega, kar potrebujemo za naš projekt..

Preučili smo mnoga ogrodja CSS s hitrim razvrščanjem v ožji izbor: Bootstrap, Bulma, Foundation, Materialize, Semantic UI, Tachyons itd. Naši dve izbiri za podrobnejši pregled sta Semantic UI (ker ima najsemantičnejši pristop) in Bulma (ker ima najlažji pristop, ki zagotavlja komponente, ki jih želimo zdaj).

Preučili smo Semantic UI. Ta ponuja veliko komponent, tudi tiste, ki jih želimo za svoj projekt: zavihke, mreže, gumbe itd. Izvedli smo pilotni preizkus s Semantic UI na dva načina: z uporabo tipičnih datotek CDN in z uporabo repozitorijev NPM. V statični strani HTML smo s Semantic UI uspeli, v okviru svojega časovnega okvirja za gradnjo JavaScript SPA pa ne (predvsem zaradi težav z nalaganjem jQuery). Ugotovili smo, da drugi programerji razvijalce Semantic UI prosijo, naj ustvarijo različico brez jQuery, iz enakih razlogov kot mi. Drugi programerji že veliko let zahtevajo različico brez jQuery, a razvijalci so odgovorili ne in navedli, da bi bila vsaka različica brez jQuery pretežka za pisanje, npr. ~»projekt Semantic UI ima več kot 22.000 stičnih točk, ki uporabljajo jQuery«.

Primer s Semantic:

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

Preučili smo Bulmo. Bulma ima mnoge podobne zmožnosti kot Semantic UI, čeprav ne toliko dovršenih komponent. Bulma je zgrajena s sodobnimi tehnikami, na primer brez jQuery. Bulma ima nekaj komponent tretjih oseb, nekatere med njimi bomo morda želeli uporabiti.

Primer z Bulmo:

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

Argument

Kot zgoraj.

Natančneje, Semantic UI ima videti opozorilno zastavico tako glede tehnologije (tj. toliko stičnih točk jQuery) kot glede vodenja (tj. različica brez jQuery je bila trda zavrnitev, namesto da bi poskusili načrt razvoja, nenehno izboljševanje, zbiranje donacij itd.).

Posledice

Če najdemo dobro ogrodje CSS brez jQuery, je to na splošno koristno in dobro.

Povezano

Povezane odločitve

Ogrodje CSS, ki ga izberemo, lahko vpliva na testabilnost.

Povezane zahteve

Želimo hitro dostaviti povsem sodobno aplikacijo.

Ne želimo porabljati časa za delo s starejšimi ogrodji (zlasti Semantic UI), ki uporabljajo starejše odvisnosti (zlasti jQuery).

Povezani artefakti

Vpliva na ves tipični HTML, ki bo uporabljal CSS.

Povezana načela

Lahko povratljivo.

Potreba po hitrosti.

Opombe

Tu so vse opombe.