Tailwind CSS v4'ün buraxılması frontend dünyasında böyük marağa və müzakirələrə səbəb olub. Ancaq mütəxəssislərin fikrincə, müzakirə iştirakçılarının böyük əksəriyyəti tamamilə fərqli məsələ ətrafında mübahisə edir. Əslində məsələ heç də “daxili üslublar (inline styles) və utility (köməkçi) sinifləri” arasındakı qarşıdurma deyil. Əsas sual fərqlidir: dizayn qərarları harada cəmləşməlidir və bu qərarların yaratdığı koqnitiv (zehni) yükü kim daşımalıdır?
Yeni versiyanın gətirdiyi ən böyük yenilik birbaşa CSS üzərindən konfiqurasiyadır (CSS-first configuration). Köhnə versiyalarda rənglər, boşluqlar və digər tənzimləmələr tailwind.config.js faylı vasitəsilə həyata keçirilirdisə, indi hər şeyi birbaşa CSS faylında @theme direktivi ilə təyin etmək mümkündür. Bu, bir çox iş prosesi üçün daha çevik və təmiz yanaşma olsa da, əsas mübahisə mövzusu bu deyil.
Pərdəarxasında əslində nə baş verir?
Tailwind v4 hazırda mövcud olan bir tendensiyanı daha da sürətləndirir: komponentlərin daxilində uzun utility sinif zəncirlərinin yazılması. Bu məsələdə iki əsas cəbhə yaranıb. "A düşərgəsi" iddia edir ki, bütün üslublar (stillər) birbaşa komponentin yanında yazılmalıdır. "B düşərgəsi" isə semantikanın əhəmiyyətini müdafiə edir. Məsələn, uzun-uzadı bg-red-50 border-red-200 text-red-800 yazmaq əvəzinə, sadəcə alert--error sinfindən istifadə edilməsinin daha doğru olduğunu bildirirlər.
Fərq ondadır ki, alert--error sinfi elementin mahiyyətini (nə olduğunu) izah edir. Utility sinifləri isə yalnız elementin vizual görünüşünü əks etdirir. Əgər dizayner xəta rəngini qırmızıdan narıncıya dəyişmək qərarına gəlsə, "B düşərgəsi" tək bir CSS qaydasını yeniləməklə problemi həll edəcək, "A düşərgəsi" isə bütün JSX fayllarında axtarış aparıb sinifləri bir-bir dəyişməli olacaq.
Tailwind v4 bu ziddiyyəti həll etmir, əksinə onu bir qədər də kəskinləşdirir. Çünki CSS-yönümlü yeni konfiqurasiya sistemi @apply direktivindən istifadəni daha asan və təbii hala gətirir ki, bu da illərdir davam edən köhnə mübahisələri yenidən alovlandırır.
Hansı yanaşma daha effektivdir?
Kiçik və orta ölçülü komandalarda — utility sinifləri daha yaxşı nəticə verir. Çünki heç kim başqasının yazdığı xüsusi sinif adlarını tapıb öyrənmək məcburiyyətində qalmır.
Böyük komandalarda və hazır dizayn sistemlərində — @apply direktivi və semantik siniflər üstünlük təşkil edir. Dizayn komandası CSS qatını idarə edir, komponentlər isə sadəcə bu hazır API-ni qəbul edir.
Komponent kitabxanaları hazırlayarkən — @apply direktivindən və ya CSS dəyişənlərindən (custom properties) istifadə etmək məsləhətdir. Hazır kitabxanadan istifadə edənlərin daxili dizayn detallarını dərindən bilməsinə ehtiyac yoxdur.
Yekunda, bu sualın hamı üçün keçərli olan tək bir cavabı yoxdur. Bu, sadəcə texniki seçim deyil, həm də komandaların təşkilati strukturuna əsaslanan qərardır. Hər bir komanda öz layihəsinin miqyasına, iş prosesinə və dizayn sisteminin yetkinliyinə uyğun olaraq öz seçimini etməlidir.
Tailwind v4'ü tənqid edənlərin bir qismi isə çox vaxt freymvorkun özünü deyil, istifadə etdikləri alətləri (məsələn, IntelliSense dəstəyi olmayan kod redaktorlarını) günahlandırırlar. İlk növbədə iş mühitinizi tənzimləyin, freymvorkdan narazı qalmağa sonra da vaxt tapılacaq.
Mənbə: Dev.to (https://dev.to/enjoy_kumawat/the-real-reason-everyones-fighting-about-tailwind-css-v4-4o0g)

