Що таке DOM?
Відкрити окрему відповідьКоротка відповідь
juniorDOM — це API, що представляє HTML‑/XML‑документ як дерево об’єктів. Через DOM можна читати, змінювати структуру, атрибути та стилі сторінки. Ключовий інструмент для взаємодії скриптів із вмістом веб‑сторінки.
Повне пояснення
Що це і навіщо DOM (Document Object Model) — програмний інтерфейс, що описує структуру документа як дерево об’єктів. Він дозволяє JavaScript‑у читати, змінювати та реагувати на зміни у вмісті сторінки.
Ключові принципи/терміни
- Node – базовий елемент дерева (елемент, атрибут, текст тощо).
- Element – вузол, що відповідає тегу HTML.
- Attribute – властивість елемента (наприклад, id, class).
- Event – подія, що генерується DOM‑вузлом.
Як це працює
- Браузер парсить HTML‑файл і створює дерево DOM.
- Скрипт отримує доступ до вузлів через
document.getElementById,querySelectorтощо. - Зміни у вузлах автоматично оновлюють візуальне представлення.
Практика і реалізація (JS/TS)
const btn = document.querySelector('#btn') as HTMLButtonElement;
btn.addEventListener('click', () => {
const div = document.createElement('div');
div.textContent = 'Hello, DOM!';
document.body.appendChild(div);
});
Тестування – можна використовувати Jest + jsdom:
test('adds div on click', () => {
document.body.innerHTML = '<button id="btn">Add</button>';
const btn = document.getElementById('btn') as HTMLButtonElement;
// …підключити обробник і перевірити
});
Безпека – при вставці HTML слід уникати XSS, використовуючи textContent замість innerHTML або бібліотеки типу DOMPurify.
Оптимізація – мінімізуйте кількість змін у DOM, групуючи їх або використовуючи фрагменти (DocumentFragment).