Architecture Decision Record

Active theme: Light

← Döntési feljegyzés példák

Architekturális döntési feljegyzés: CSS keretrendszer

Tartalom:

Összefoglaló

Probléma

CSS keretrendszert szeretnénk használni a webalkalmazásaink létrehozásához:

  • Azt szeretnénk, hogy a felhasználói élmény gyors és megbízható legyen az összes népszerű böngészőn és képernyőméreten.

  • Gyors iterációt szeretnénk a dizájnban, elrendezésben, UI/UX-ben stb.

  • Reszponzív alkalmazásokat szeretnénk, különösen kisebb képernyőkre, például mobileszközökön, nagyobb képernyőkre, például 4K szélesvásznakon, és dinamikus képernyőkre, például forgatható kijelzőkre.

Döntés

A Bulma mellett döntöttünk.

Állapot

A Bulma mellett döntöttünk. Nyitottak vagyunk az új CSS keretrendszer-választásokra, ahogy megjelennek.

Részletek

Feltevések

Modern, gyors, megbízható, reszponzív stb. webalkalmazásokat szeretnénk létrehozni.

A tipikus modern webalkalmazások csökkentik/megszüntetik a jQuery használatát több okból:

  • A modern JavaScript fokozatosan bevezeti a jQuery által nyújtott számos képességet, ezért a jQuery kevésbé szükséges, és vannak jobb/gyorsabb/kisebb modulok, amelyek konkrét megvalósításokat nyújtanak

  • A jQuery széles megközelítése a közvetlen DOM-manipuláció, ami ellenminta a modern JavaScript keretrendszerek (pl. React, Vue, Svelte) számára

  • A jQuery zavarja önmagát, ha kétszer töltik be stb.

Megszorítások

Ha olyan CSS keretrendszert választunk, amely jQuery-t használ, akkor kénytelenek vagyunk importálni a jQuery-t. Például a Semantic UI jQuery-t használ, a Tachyons nem.

Ha minimális CSS keretrendszert választunk, lemondunk olyan keretrendszer-komponensekről, amelyekre most vagy hamarosan szükségünk lehet. Például a Semantic UI képkaruzelt nyújt, a Tachyons nem.

Álláspontok

Fontolóra vettük, hogy nem használunk keretrendszert. Ez továbbra is járhatónak tűnik, különösen mert a CSS grid sok mindent megad, amire a projektünkhöz szükségünk van..

Sok CSS keretrendszert fontolóra vettünk gyors, rövid listás válogatással: Bootstrap, Bulma, Foundation, Materialize, Semantic UI, Tachyons stb. A mélyebb áttekintésre kiválasztott két jelölt a Semantic UI (mert ez a legszemantikusabb megközelítés) és a Bulma (mert ez a legkönnyebb megközelítés, amely megadja a most kívánt komponenseket).

Fontolóra vettük a Semantic UI-t. Ez sok komponenst nyújt, köztük olyanokat, amelyeket a projektünkhöz szeretnénk: füleket, rácsokat, gombokat stb. Kétféleképpen végeztünk kísérletet a Semantic UI-jal: hagyományos CDN-fájlokkal és NPM-tárolók használatával. Sikerrel jártunk a Semantic UI-jal egy statikus HTML-oldalon, de nem értünk el sikert az időkeretünkön belül egy JavaScript SPA építésében (elsősorban a jQuery betöltési problémái miatt). Felfedeztük, hogy más programozók kérik a Semantic UI fejlesztőit, hogy készítsenek jQuery-mentes verziót, ugyanazokból az okokból, mint mi. Más programozók sok éve kérnek jQuery-mentes verziót, a fejlesztők azonban nemet mondtak, és kijelentették, hogy bármilyen jQuery-mentes verziót túl nehéz lenne megírni, pl. ~„a Semantic UI projektnek több mint 22 000 érintkezési pontja van, amely jQuery-t használ”.

Példa a Semantic-kal:

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

Fontolóra vettük a Bulmát. A Bulma sok hasonló képességgel rendelkezik, mint a Semantic UI, bár nem olyan sok kifinomult komponenssel. A Bulma modern technikákkal készült, például jQuery nélkül. A Bulmának vannak harmadik féltől származó komponensei, amelyek közül néhányat esetleg használni szeretnénk.

Példa a Bulmával:

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

Érv

Mint fent.

Konkrétan a Semantic UI-nál figyelmeztető jelzés látszik mind technológiai szempontból (azaz annyi jQuery-érintkezési pont), mind vezetési szempontból (azaz a jQuery-mentesség kemény nemet kapott, ahelyett hogy útitervet, folyamatos fejlesztést, adománygyűjtést stb. kíséreltek volna meg).

Következmények

Ha találunk egy jó jQuery-mentes CSS keretrendszert, az általában hasznos és jó.

Kapcsolódó

Kapcsolódó döntések

A választott CSS keretrendszer befolyásolhatja a tesztelhetőséget.

Kapcsolódó követelmények

Gyorsan szeretnénk kiadni egy tisztán modern alkalmazást.

Nem akarunk időt tölteni régebbi keretrendszerekkel (főleg a Semantic UI-jal) való munkával, amelyek régebbi függőségeket (főleg a jQuery-t) használnak.

Kapcsolódó artefaktumok

Érinti az összes tipikus HTML-t, amely ezt a CSS-t használja.

Kapcsolódó alapelvek

Könnyen visszafordítható.

A sebesség szükségessége.

Megjegyzések

Bármilyen megjegyzés ide.