React Academy · Lekcja

Architektura tokenów dla wielu motywów i marek

Zorganizują Państwo tokeny w hierarchii poziomów (prymitywne, semantyczne, komponentowe), aby obsłużyć motywy jasne, ciemne i motywy wielu marek.

Lekcja 4 z 413 kroki

Architektura tokenów dla wielu motywów i marek to bezpłatna lekcja React Academy na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej React Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs React Academy zawiera 4 lekcji w sumie.

Motyw a marka

Motyw zmienia tryb kolorystyczny tej samej marki (jasną i ciemną wersję tego samego produktu). Marka to odmienna tożsamość wizualna — te same komponenty systemu projektowego są renderowane z innymi kolorami, typografią i odstępami, aby obsługiwać różne produkty lub klientów. Oba rozwiązania korzystają z tej samej architektury tokenów, ale działają na różnych poziomach abstrakcji.

Warstwa tokenów prymitywnych

Tokeny prymitywne to pełna paleta surowych wartości dostępnych w systemie. Obejmuje ona każdy odcień koloru (color-blue-50 do color-blue-900), każdą jednostkę odstępów oraz każdy rozmiar czcionki. Tokenów prymitywnych nigdy nie używa się bezpośrednio w komponentach — odwołują się do nich wyłącznie tokeny semantyczne. Paletę definiuje się raz i współdzieli między wszystkimi motywami i markami.

Warstwa tokenów semantycznych

Tokeny semantyczne wyrażają intencję: color-background-page, color-text-primary, color-action-primary. Każdy token semantyczny odwołuje się do wartości tokenu prymitywnego odpowiedniej dla bieżącego motywu. Komponenty buduje się wyłącznie w oparciu o tokeny semantyczne. To warstwa odpowiedzialna za obsługę motywów.

Mapowania semantyczne jasnego motywu

W jasnym motywie: color-background-page odwołuje się do color-white, color-text-primary odwołuje się do color-gray-900, a color-action-primary odwołuje się do color-blue-500. Te mapowania są definiowane w pliku tokenów właściwym dla motywu, który nadpisuje warstwę semantyczną w jasnym kontekście.

Mapowania semantyczne ciemnego motywu

W ciemnym motywie: color-background-page odwołuje się do color-gray-950, color-text-primary odwołuje się do color-gray-50, a color-action-primary odwołuje się do color-blue-400 (nieco jaśniejszego, aby zachować kontrast na ciemnym tle). Zmieniają się tylko mapowania semantyczne — paleta prymitywna i wszystkie komponenty pozostają bez zmian.

Nadpisania marki

Marka A używa niebieskiego jako koloru podstawowego (color-action-primary: {color-blue-500}). Marka B używa zielonego (color-action-primary: {color-green-500}). Komponent przycisku odczytuje var(--color-action-primary) — nie wie nic o tym, która marka jest aktywna. Nadpisania marki zmieniają wyłącznie mapowania tokenów semantycznych, nigdy kod komponentów.

Przełączanie motywu w czasie działania

Własne właściwości CSS sprawiają, że przełączanie motywu w czasie działania jest bardzo proste. Przechowuj bieżący motyw w atrybucie danych: document.documentElement.setAttribute('data-theme', 'dark'). Reguły CSS nadpisują tokeny semantyczne w obrębie selektora [data-theme="dark"]. Przeglądarka natychmiast rozwiązuje wszystkie odwołania var() do nowych wartości — ponowne renderowanie za pomocą JavaScriptu nie jest wymagane.

Motywowanie marki podczas budowania

W przypadku różnych marek obsługiwanych w ramach oddzielnych wdrożeń zastosuj motywowanie podczas budowania: wygeneruj oddzielne pliki tokenów CSS dla każdej marki za pomocą Style Dictionary i wczytaj właściwy plik CSS marki podczas uruchamiania aplikacji. To podejście sprawdza się, gdy marka jest określana podczas wdrażania (na podstawie różnych domen, subdomen lub instancji whitelabel), a nie podczas interakcji użytkownika.

Łączenie marki i motywu

System obsługujący wiele marek i motywów wymaga macierzy dwuwymiarowej: Marka A — jasny motyw, Marka A — ciemny motyw, Marka B — jasny motyw, Marka B — ciemny motyw. Własne właściwości CSS elegancko obsługują ten przypadek za pomocą zagnieżdżonych selektorów: [data-brand="a"][data-theme="dark"] nadpisuje tokeny semantyczne dla konkretnej kombinacji. Cztery kombinacje oznaczają cztery bloki CSS, a nie cztery bazy kodu.

Wersjonowanie i wycofywanie tokenów

W miarę rozwoju systemu projektowego tokeny są dodawane, zmieniane lub usuwane. Wersjonuj tokeny w tym samym repozytorium co kod. Podczas wycofywania tokenu zachowaj starą nazwę jako alias wskazujący na nową nazwę przez jeden cykl wydania, dodaj komentarz o wycofaniu i zaktualizuj kod korzystający z tokenu. Koordynuj zmiany tokenów między zespołami projektowymi i programistycznymi za pomocą ustrukturyzowanego dziennika zmian.

Zarządzanie tokenami: kto jest właścicielem tokenów

Zarządzanie określa, kto może dodawać tokeny lub je zmieniać oraz jaki proces weryfikacji jest wymagany. Tokeny prymitywne wymagają zatwierdzenia zespołu projektowego. Tokeny semantyczne wymagają weryfikacji zarówno zespołu projektowego, jak i inżynieryjnego. Tokenami komponentów może zarządzać właściciel komponentu. Bez takiego zarządzania pojawiają się zduplikowane tokeny, a gwarancja jednego źródła prawdy przestaje obowiązywać.

Rozróżnienie tokenów semantycznych i prymitywnych

Dlaczego komponenty powinny odwoływać się do tokenów semantycznych zamiast do prymitywnych?

Podsumowanie lekcji

Motywy zmieniają tryby kolorystyczne w obrębie marki, natomiast marki to różne identyfikacje wizualne. Tokeny prymitywne to surowa paleta, a tokeny semantyczne wyrażają znaczenie i umożliwiają stosowanie motywów. Komponenty używają wyłącznie tokenów semantycznych. Tryb ciemny i nadpisania marki zmieniają tylko mapowania tokenów semantycznych — komponenty pozostają bez zmian. Motywy stosowane w czasie działania wykorzystują niestandardowe właściwości CSS z selektorami [data-theme], a branding na etapie budowania generuje osobny plik CSS dla każdej marki. Zarządzanie tokenami i wersjonowanie zapewniają spójność systemu w miarę jego rozwoju.

Bezpłatny start

Ucz się React dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
88
Lekcje
324

Często zadawane pytania

Czy lekcja „Architektura tokenów dla wielu motywów i marek” jest bezpłatna?

Tak — pełny tekst „Architektura tokenów dla wielu motywów i marek” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu React Academy, przejdź na CoddyKit PRO. Kurs React Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Architektura tokenów dla wielu motywów i marek”?

Zorganizują Państwo tokeny w hierarchii poziomów (prymitywne, semantyczne, komponentowe), aby obsłużyć motywy jasne, ciemne i motywy wielu marek. Ćwiczysz React Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć React Academy?

Nie wymagamy żadnego doświadczenia. React Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.

Ile czasu zajmuje lekcja „Architektura tokenów dla wielu motywów i marek”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji React Academy?

Tak. Każda lekcja React Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Czym są tokeny projektowe i dlaczego są ważne
  2. Style Dictionary: transformowanie i generowanie tokenów
  3. Tokeny w Tailwind, zmienne CSS i CSS-in-JS
  4. Architektura tokenów dla wielu motywów i marek
← Powrót do React Academy