Dasturiy ta'minot

GitHub Primer dizayn tizimida CSS Modulesga o'tish va unumdorlik oshishi

27-sentabr, 2026, 13:170 ko'rish3 daqiqa o'qish
GitHub Primer dizayn tizimida CSS Modulesga o'tish va unumdorlik oshishi

GitHubning Primer dizayn tizimi, butun platformada tugmalar, bannerlar, breadcrumblar kabi asosiy komponentlarni boshqaradi. 2023‑yilda sahifalardagi komponentlar soni keskin oshgani sababli, mavjud CSS-in-JS yondashuvi sahifa yuklanishida sezilarli kechikishlarga olib keldi. Bu muammo nafaqat foydalanuvchi tajribasini pasaytirdi, balki server‑tomonida render qilish samaradorligini ham susaytirdi.

Kontekst va muhimligi

Primer dizayn tizimi GitHubning ko‘plab ichki va tashqi interfeyslarida bir xil vizual standartni ta’minlaydi. Dizayn tizimlari odatda komponentlarni qayta ishlatish, kirish imkoniyatini yaxshilash va kodni modulga ajratish maqsadida yaratiladi. Biroq, komponentlar soni o‘sib borishi bilan CSS‑in‑JS usulining runtime xarajatlari ham ortib, sahifa birinchi rasmiylashtirish vaqtini uzaytirdi.

Humorous header image with 'alt=IMG_2847.png' written across the top, and Mona's head looking up at a cube next to a GitHub logo on the bottom.

Ushbu muammolarni hal qilish uchun GitHub jamoasi CSS‑in‑JS o‘rniga CSS Modulesni tanladi. CSS Modules – bu klass nomlarini mahalliy (local) darajada izolyatsiya qiluvchi, lekin oddiy CSS fayllarida yoziladigan yondashuv bo‘lib, ularni sahifaga statik stylesheet sifatida qo‘shish imkonini beradi.

CSS‑in‑JS muammolari

GitHubda CSS‑in‑JS quyidagi asosiy kamchiliklarga ega edi:

  • Klientda sahifa yuklanishida stilni dinamik yaratish va yig‘ish kerak bo‘ldi, bu esa initial load vaqtini oshirdi.
  • Server‑tomon renderda stil to‘plami yaratish jarayoni murakkablashdi, natijada SSR samaradorligi pasaydi.
  • Komponentlar soni ko‘paygani sari sx prop orqali beriladigan inline stil obyektlari hajmi kattalashdi, bu esa runtime yukini oshirdi.

Ushbu holatlar natijasida sahifalar bir necha soniyaga cho‘zilib, foydalanuvchi tajribasi va SEO ko‘rsatkichlari zarar ko‘rdi.

CSS Modulesga o'tish strategiyasi

Primer jamoasi inkremental migratsiya modelini tanladi. Har bir komponent uchun quyidagi bosqichlar amalga oshirildi:

  • Yangi .module.css fayl yaratilib, mavjud stilni unga ko‘chirish.
  • Komponentni feature flag orqali eski (CSS‑in‑JS) va yangi (CSS Modules) usullar orasida almashtirish.
  • Vizual regressiya testlari yordamida ikki usul orasidagi snapshotlarni solishtirish.
  • Flagni avval jamoa ichida, keyin GitHub xodimlari, oxirida barcha foydalanuvchilarga bosqichma‑bosqich yoqish.

Bu yondashuv riskni kamaytirish va tezkor fikr-mulohaza olish imkonini berdi. Shuningdek, @primer/styled-react paketida “wrapper” komponentlar yaratilib, sx propni yangi komponentlarga moslashtirishga yordam berdi.

Muqobil yondashuv – bir zumda barcha komponentlarni o‘zgartirish – katta xatolik xavfini tug‘dirardi, chunki GitHubning butun UI kod bazasi minglab sx propga tayanardi.

Natijalar va o‘lchovlar

2024‑dekabr oyiga qadar barcha Primer komponentlari CSS Modulesga ko‘chirildi. Olingan asosiy natijalar:

  • 55% ga kamroq server‑tomon render vaqti – sahifa HTMLi tezroq tayyorlandi.
  • 25% ga qisqargan komponent boshlang‘ich vaqti – foydalanuvchi sahifani ochganda stil yuklanishi kechikishi kamaydi.
  • Klient‑tomon JavaScript hajmi kamaydi, chunki dinamik stil yaratish kodlari olib tashlandi.
  • Vizual regressiya testlari orqali 0% regressiya aniqlangan, bu migratsiyaning barqarorligini tasdiqladi.

Bu natijalar nafaqat Primer tizimida, balki GitHubning boshqa mahsulotlarida ham CSS‑in‑JSni o‘chirishga bo‘lgan ishonchni oshirdi. Jamoa sx propni kamaytirish orqali birinchi bosqichda ham sezilarli tezlik oshishini ko‘rdi.

Kelajakdagi yo‘nalishlar va xulosa

CSS‑in‑JSni butun GitHub platformasidan chiqarish uchun quyidagi bosqichlar rejalashtirilmoqda:

  • sx propni tizimli ravishda kamaytirish – mavjud komponentlarda sxni static klasslarga almashtirish.
  • Yangi komponentlar uchun @primer/react paketini standart sifatida belgilash.
  • Qoldiq CSS‑in‑JS kod bazasini progressive deprecation orqali bosqichma‑bosqich olib tashlash.

Ushbu jarayon davomida feature flag va visual regression testing kabi xavfsizlik mexanizmlari saqlanadi, shuning uchun foydalanuvchilar sahifalarini uzluksiz ishlashini his qilishadi.

GitHubning bu tajribasi, katta miqdordagi komponentlar bilan ishlovchi har qanday dizayn tizimi uchun foydali dars bo‘lib, statik CSSga o‘tishning samaradorligini ko‘rsatadi. original articleda batafsil texnik tafsilotlar va kod misollari keltirilgan.

Asl manba: github.blog

Manba: Hacker News
#CSS Modules #Primer Design System #performance optimization #GitHub
Telegram da muhokama qilish