Sobes.tech
Middle

რა არის Shadow DOM?

sobes.tech AI

პასუხი AI-სგან

Shadow DOM - ეს არის ვებ სტანდარტი, რომელიც საშუალებას აძლევს ინკაპსულიროს DOM და CSS-ის კომპონენტის შიგნით. იგი ქმნის ცალკე, იზოლირებულ DOM ხეს, რომელსაც უწოდებენ "ჩრდილოვან ხეს" (shadow tree), რომელიც მიამაგრებულია ძირითადი დოკუმენტის ელემენტზე, რომელსაც უწოდებენ "ჩრდილოვან ფესვს" (shadow root).

Shadow DOM-ის უპირატესობები:

  • CSS-ის იზოლაცია: Shadow DOM-ის შიგნით განსაზღვრული სტილები არ "ჩადიან" გარეთ, გავლენას ახდენენ ძირითადი დოკუმენტისზე, და პირიქით, ძირითადი დოკუმენტის სტილები ჩვეულებრივ არ ზემოქმედებს Shadow DOM-ზე.
  • DOM-ის იზოლაცია: Shadow DOM-ის სტრუქტურა დაფარულია ძირითადი დოკუმენტიდან და ხელმისაწვდომი არაა სტანდარტული არჩევითი მეთოდებით (მაგ., querySelector).
  • JavaScript-ის იზოლაცია: სკრიპტები, რომლებიც შესრულებულია ძირითადი დოკუმენტში, ადვილად ვერ მიიღებენ წვდომას Shadow DOM-ის ელემენტებზე.
  • გადამეორებითი გამოყენება: Shadow DOM-ით შექმნილი კომპონენტები ადვილად შეიძლება გამოყენებულ იქნას სხვა ნაწილებში ან სხვა ვებგვერდებზე.

Shadow DOM-ის შექმნა:

// ვიღებთ ელემენტს, რომელსაც გვსურს მიამაგროთ Shadow DOM
const hostElement = document.getElementById('my-component');

// ვქმნით Shadow Root
// 'open' ხდის Shadow DOM-ს ხელმისაწვდომს გარედან hostElement.shadowRoot-ის მეშვეობით
// 'closed' მალავს Shadow DOM-ს
const shadowRoot = hostElement.attachShadow({ mode: 'open' });

// ვამატებთ ელემენტებს Shadow DOM-ის შიგნით
shadowRoot.innerHTML = `
  <style>
    /* ამ კომპონენტის სპეციფიკური სტილები */
    h2 {
      color: blue;
    }
  </style>
  <h2>კომპონენტის შიდა სათაური</h2>
  <p>კომპონენტის შიდა პარაგრაფი.</p>
`;

სინიშნულებები:

  • სლოტები (Slots): საშუალებას აძლევს ჩასვათ გარე შინაარსი გარკვეულ ადგილებში Shadow DOM-ის შიგნით
  • Shadow Parts: საშუალებას აძლევს სტილიზიროთ გარკვეული ელემენტები Shadow DOM-ის შიგნით გარე მხრიდან

Shadow DOM არის მნიშვნელოვანი კომპონენტი ვებ-კომპონენტების შექმნისთვის, რომელიც უზრუნველყოფს მძლავრ ინკაპსულაციას, საჭირო გახდის გამეორებად და თვითმომსახურე UI ელემენტების შექმნას.