Фото: Mohammad Rahmani на Unsplash
Я натрапив на jsdom, коли шукав способи емуляції веб-браузера без використання драйвера браузера. Jsdom — це чиста JavaScript-реалізація багатьох веб-стандартів, таких як DOM стандарт WHATWG та HTML стандарти, призначена для використання з Node.js. Вона дозволяє емулювати частини функціональності браузера, що робить її корисною для завдань, таких як тестування та веб-скрапінг 😈.
Jsdom аналізує HTML і надає віртуальний DOM, з яким можна взаємодіяти програмно, як і з реальним браузерним DOM. Ось простий приклад:
const jsdom = require("jsdom");
const { JSDOM } = jsdom;
const dom = new JSDOM(`
Hello world
`); console.log(dom.window.document.querySelector("p").textContent); // "Hello world"
Цей код створює віртуальний DOM з простою HTML-структурою та виводить текстовий вміст елемента <p>
.
Ця бібліотека надає різні параметри для налаштування, такі як встановлення URL, реферера та типу контенту. Вона також підтримує виконання скриптів у межах віртуального DOM. Однак виконання скриптів за замовчуванням вимкнене з міркувань безпеки. Ви можете увімкнути його, використовуючи параметр runScripts
, але будьте обережні з неперевіреним контентом.
Інша корисна функція — можливість "вдаватися" у вигляд візуального браузера. Хоча jsdom не рендерить нічого візуально, встановлення параметра pretendToBeVisual: true
дозволяє використовувати API, такі як window.requestAnimationFrame()
, і змінює властивості, такі як document.hidden
, для кращого імітування реального середовища браузера.
Загалом, jsdom — потужний інструмент для розробників, які працюють з веб-контентом поза межами традиційного браузера. Він особливо корисний для автоматизованого тестування та серверного рендерингу веб-застосунків.
Перекладено з: What is JSDOM?