0Pricing
HTML Academy · Lekcja

Składnia data-* i konwencje nazewnictwa

Poznanie prawidłowych nazw atrybutów data-* i ich przeznaczenia

Składnia data-* i konwencje nazewnictwa to bezpłatna lekcja HTML Academy na CoddyKit. To lekcja 1 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 HTML Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs HTML Academy zawiera 4 lekcji w sumie.

Powtórzenie: atrybuty data-*

Atrybuty danych (data-*) przechowują niestandardowe informacje w elementach HTML:

<div data-user-id="42" data-role="admin" data-active="true">
  User Card
</div>

Prawidłowe zasady nazewnictwa

Wymagania dotyczące nazewnictwa atrybutów data-*:

  • Muszą zaczynać się od data-
  • Po prefiksie musi występować co najmniej jeden znak
  • Dozwolone są wyłącznie małe litery, cyfry, łączniki, podkreślenia, kropki i dwukropki
  • Nie mogą zawierać wielkich liter (parser HTML zamienia atrybuty na małe litery)
  • Nie mogą zawierać spacji

Konwencje nazewnictwa

Konwencje nazewnictwa stosowane w społeczności:

<!-- BEM-style: module__element--modifier -->
data-card="profile"
data-card-id="42"
data-card-state="expanded"

<!-- Descriptive: domain-concept -->
data-product-id="SKU-123"
data-analytics-event="click-cta"
data-feature-flag="dark-mode"

Wiele atrybutów danych

Element może mieć dowolną liczbę atrybutów data:

<button
  type="button"
  data-action="delete"
  data-target-id="user-42"
  data-confirm="true"
  data-confirm-message="Delete this user permanently?"
>Delete</button>

Wartości są zawsze ciągami znaków

Wartości atrybutów data są zawsze ciągami znaków — należy je analizować w JavaScript:

const el = document.querySelector('[data-user-id]');

console.log(el.dataset.userId);              // '42' (string)
console.log(typeof el.dataset.userId);       // 'string'

// Parse to number:
const id = parseInt(el.dataset.userId, 10);   // 42 (number)

// Parse to boolean:
const active = el.dataset.active === 'true'; // true (boolean)

// Parse to JSON:
const config = JSON.parse(el.dataset.config); // object

Przechowywanie JSON w data-*

Złożone dane należy przechowywać jako ciągi JSON:

<div
  data-config='{"theme":"dark","locale":"en-US","pageSize":20}'
  id="app"
></div>

<script>
const el = document.getElementById('app');
const config = JSON.parse(el.dataset.config);
console.log(config.theme);    // 'dark'
console.log(config.pageSize); // 20
</script>

data-* a elementy niestandardowe

Kiedy wybrać data-*, elementy niestandardowe lub obiekty JavaScript:

  • data-* — metadane specyficzne dla elementu, widoczne w HTML i dostępne z poziomu CSS
  • Elementy niestandardowe — złożone, wielokrotnego użytku komponenty z hermetyzowanym działaniem
  • JavaScript Map/WeakMap — dane, które nie są potrzebne w HTML; duże lub złożone dane

Wykorzystanie data-* w frameworkach

Typowe zastosowania atrybutów data we frameworkach:

<!-- Bootstrap: target collapsible elements -->
<button data-bs-toggle="collapse" data-bs-target="#menu">
  Toggle
</button>

<!-- Alpine.js: component data -->
<div x-data="{ open: false }">

<!-- Stimulus: controller identification -->
<div data-controller="menu" data-menu-open-value="false">

<!-- Testing libraries: stable selectors -->
<button data-testid="submit-btn">Submit</button>

Dostępność a data-*

Atrybuty data nie są odczytywane przez czytniki ekranu — nie należy używać ich do przechowywania informacji dotyczących dostępności:

<!-- BAD: accessibility info in data-* -->
<button data-label="Close dialog">×</button>
<!-- Screen reader does NOT read data-label -->

<!-- GOOD: use aria-label for accessibility -->
<button aria-label="Close dialog">×</button>

Kwestie wydajności

Atrybuty data-* mają pomijalny wpływ na wydajność:

  • Odczyt dataset jest szybki (O(1))
  • Intensywne używanie data-* na tysiącach elementów nie stanowi problemu
  • Przechowywanie dużych porcji danych (obrazów, dużych obiektów JSON) w data-* jest nieefektywne
  • Do przechowywania dużych obiektów JavaScript powiązanych z elementami DOM należy używać WeakMap

Podsumowanie: dobre praktyki dotyczące data-*

Dobre praktyki dotyczące data-*:

  • Należy używać nazw pisanych małymi literami i rozdzielanych łącznikami
  • Wartości są zawsze ciągami znaków — należy je analizować w razie potrzeby
  • W przypadku JSON należy używać JSON.stringify / JSON.parse
  • Należy używać ich do metadanych potrzebnych CSS lub JavaScriptowi
  • Nie zastępują atrybutów ARIA
  • Nie należy przechowywać sekretów (są widoczne w DevTools)

Szybkie sprawdzenie

Jakiego typu wartości atrybutów zawsze zwraca dataset?

Powtórzenie: składnia data-*

Najważniejsze zasady nazewnictwa data-*:

  • Format: data-[lowercase-name]="value"
  • Dostęp: element.dataset.camelCaseName
  • Wszystkie wartości są ciągami znaków — należy je jawnie analizować
  • W przypadku złożonych danych należy przechowywać JSON
  • Nazwy atrybutów muszą być pisane małymi literami, bez wielkich liter i spacji

Często zadawane pytania

Czy lekcja „Składnia data-* i konwencje nazewnictwa” jest bezpłatna?

Tak — pełny tekst „Składnia data-* i konwencje nazewnictwa” 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 HTML Academy, przejdź na CoddyKit PRO. Kurs HTML Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Składnia data-* i konwencje nazewnictwa”?

Poznanie prawidłowych nazw atrybutów data-* i ich przeznaczenia Ćwiczysz HTML 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ąć HTML Academy?

Nie wymagamy żadnego doświadczenia. HTML 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 1 z 4.

Ile czasu zajmuje lekcja „Składnia data-* i konwencje nazewnictwa”?

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 HTML Academy?

Tak. Każda lekcja HTML 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. Składnia data-* i konwencje nazewnictwa
  2. Dostęp do data-* za pomocą dataset w JavaScript
  3. Używanie data-* z selektorami atrybutów CSS
  4. Wzorce z praktyki — podpowiedzi i śledzenie stanu
← Powrót do HTML Academy