Kodėl apskritai kalbame apie šį konfliktą?
Prieš kelerius metus frontend bendruomenėje kilo tikras karas tarp dviejų stovyklų. Vieni tvirtino, kad CSS-in-JS yra ateitis, kiti grasino palikti profesiją, jei teks rašyti stilius JavaScript’e. Šiandien, kai dulkės jau nusėdo, galime ramiai pažiūrėti į skaičius ir realius performance rezultatus.
Tiesą sakant, ši diskusija niekada nebuvo tik apie sintaksę ar asmeninę preferenciją. Čia kalbame apie tai, kaip greitai užsikrauna jūsų aplikacija, kiek resursų ji ėda ir kaip jaučiasi vartotojas su lėtu internetu ar senu telefonu. O tai jau tikrai ne filosofiniai klausimai.
Pats dirbau projekte, kur perėjome nuo styled-components prie tradicinio CSS modulių. Rezultatai buvo… įdomūs. Bet apie tai vėliau.
Kas iš tikrųjų vyksta po gaubtu
Tradicinis CSS yra paprastas kaip durų skambutis. Naršyklė parsiunčia CSS failą, jį parsina, sukuria CSSOM (CSS Object Model) ir viskas. Stilai pritaikomi beveik akimirksniu, nes naršyklės šitą daro nuo 1996-ųjų ir yra išoptimintos iki ausų.
CSS-in-JS bibliotekos dirba kitaip. Jos ima jūsų JavaScript kodą, runtime’e generuoja stilius, įkiša juos į DOM kaip `

