foundation
DOM tree
Разбирайтесь в nodes, elements, attributes, текстовых узлах, живом состоянии документа, селекторах, обходе и побочных эффектах мутаций.
DOM — живой объектный граф, представляющий разобранный документ. Elements, text nodes, attributes и document fragments дают API для поиска, обхода, мутаций и измерений. Это не исходная HTML-строка и не финальное accessibility tree; мутации могут запустить работу рендеринга позже в том же кадре.
const list = document.querySelector('[data-list]');
const item = document.createElement('li');
item.textContent = 'Новая строка'; // безопаснее innerHTML для простого текста
list.append(item);
Attributes относятся к разметке; properties отражают живое состояние объекта (например `value` у полей ввода). Чтение layout-свойств после записи может синхронно завершить style и layout.
На интервью: объясните, как селекторы, типы узлов, attributes vs properties и DOM-мутации связаны со стоимостью рендеринга.
Типовые ошибки: безобидный вид innerHTML и XSS; чередование записей DOM с измерениями вызывает layout.
Компромисс: удобная вставка HTML против безопасных text API и батчинга обновлений.
Чеклист:
- Отделяйте исходный HTML от живого DOM.
- Знайте nodes, elements и document fragments.
- Батчите мутации; не чередуйте read и write.
- Избегайте небезопасной HTML-инъекции.