Architecture Decision Record

Active theme: Light

← Päätöstietueiden esimerkkejä

Arkkitehtuuripäätöstietue: CSS-kehys

Sisällys:

Yhteenveto

Ongelma

Haluamme käyttää CSS-kehystä verkkosovellustemme luomiseen:

  • Haluamme käyttökokemuksen olevan nopea ja luotettava kaikilla suosituilla selaimilla ja näyttökokoilla.

  • Haluamme nopean iteroinnin suunnittelussa, asettelussa, UI/UX:ssä jne.

  • Haluamme responsiivisia sovelluksia, erityisesti pienemmille näytöille kuten mobiililaitteille, suuremmille näytöille kuten 4K-laajakuvanäytöille ja dynaamisille näytöille kuten kierrettäville näytöille.

Päätös

Päätettiin Bulmasta.

Tila

Päätettiin Bulmasta. Olemme avoimia uusille CSS-kehysvalinnoille niiden ilmaantuessa.

Yksityiskohdat

Oletukset

Haluamme luoda verkkosovelluksia, jotka ovat nykyaikaisia, nopeita, luotettavia, responsiivisia jne.

Tyypilliset nykyaikaiset verkkosovellukset vähentävät/poistavat jQueryn käyttöä useista syistä:

  • Nykyaikainen JavaScript tuo vähitellen monia ominaisuuksia, joita jQuery on tarjonnut, joten jQueryä tarvitaan vähemmän, ja on parempia/nopeampia/pienempiä moduuleja, jotka tarjoavat tiettyjä toteutuksia

  • jQueryn laaja lähestymistapa on suora DOM-manipulointi, mikä on antimalli nykyaikaisille JavaScript-kehyksille (esim. React, Vue, Svelte)

  • jQuery häiritsee itseään, jos se ladataan kahdesti jne.

Rajoitteet

Jos valitsemme CSS-kehyksen, joka käyttää jQueryä, olemme jumissa jQueryn tuomisessa. Esimerkiksi Semantic UI käyttää jQueryä, ja Tachyons ei.

Jos valitsemme minimaalisen CSS-kehyksen, luovumme kehyskomponenteista, joita saatamme haluta nyt tai pian. Esimerkiksi Semantic UI tarjoaa kuvakarusellin, ja Tachyons ei.

Kannat

Harkitsimme kehyksen käyttämättä jättämistä. Tämä näyttää edelleen toteuttamiskelpoiselta, erityisesti koska CSS grid tarjoaa suuren osan siitä, mitä projektimme tarvitsee..

Harkitsimme monia CSS-kehyksiä nopealla lyhyen listan seulonnalla: Bootstrap, Bulma, Foundation, Materialize, Semantic UI, Tachyons jne. Kaksi valintaamme syvempään tarkasteluun ovat Semantic UI (koska siinä on semanttisin lähestymistapa) ja Bulma (koska siinä on kevyin lähestymistapa, joka tarjoaa haluamamme komponentit nyt).

Harkitsimme Semantic UI:ta. Se tarjoaa monia komponentteja, mukaan lukien sellaisia, joita haluamme projektiimme: välilehdet, ruudukot, painikkeet jne. Teimme pilotin Semantic UI:lla kahdella tavalla: käyttäen tyypillisiä CDN-tiedostoja ja käyttäen NPM-tietovarastoja. Onnistuimme Semantic UI:n kanssa staattisella HTML-sivulla, mutta emme onnistuneet aikarajamme puitteissa rakentamaan JavaScript-SPA:ta (pääasiassa jQueryn latausongelmien vuoksi). Havaitsimme, että muut koodaajat ovat pyytäneet Semantic UI:n kehittäjiä luomaan jQuery-vapaan version samoista syistä kuin me. Muut koodaajat ovat pyytäneet jQuery-vapaata versiota monien vuosien ajan, mutta kehittäjät ovat sanoneet ei ja todenneet, että mikä tahansa jQuery-vapaa versio olisi liian vaikea kirjoittaa esim. ~"Semantic UI -projektissa on yli 22 000 kosketuspistettä, jotka käyttävät jQueryä".

Esimerkki Semanticilla:

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

Harkitsimme Bulmaa. Bulmassa on monia samoja ominaisuuksia kuin Semantic UI:ssa, vaikkakaan ei yhtä paljon hienostuneita komponentteja. Bulma on rakennettu nykyaikaisilla tekniikoilla, kuten ilman jQueryä. Bulmalle on joitakin kolmansien osapuolten komponentteja, joista osaa saatamme haluta käyttää.

Esimerkki Bulmalla:

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

Perustelu

Kuten edellä.

Erityisesti Semantic UI:ssa näyttää olevan varoitusmerkki sekä teknologian (eli niin monet jQuery-kosketuspisteet) että johtajuuden osalta (eli jQuery-vapaa oli jyrkkä ei, sen sijaan että olisi yritetty tiekarttaa, jatkuvaa parantamista, lahjoituskeräystä jne.).

Seuraukset

Jos löydämme hyvän jQuery-vapaan CSS-kehyksen, tämä on yleisesti hyödyllistä ja hyvää kokonaisuudessaan.

Liittyvät

Liittyvät päätökset

Valitsemamme CSS-kehys voi vaikuttaa testattavuuteen.

Liittyvät vaatimukset

Haluamme toimittaa täysin nykyaikaisen sovelluksen nopeasti.

Emme halua käyttää aikaa vanhempien kehysten (erityisesti Semantic UI) parissa, jotka käyttävät vanhempia riippuvuuksia (erityisesti jQuery).

Liittyvät artefaktit

Vaikuttaa kaikkeen tyypilliseen HTML:ään, joka käyttää CSS:ää.

Liittyvät periaatteet

Helposti peruttavissa.

Tarve nopeuteen.

Huomiot

Mahdolliset huomiot tähän.