Библиотека aria-query предназначена для работы с ARIA-атрибутами и ролями в веб-приложениях на JavaScript, предоставляя набор инструментов для валидации и анализа доступности интерфейсов. Одним из ключевых аспектов её использования является совместимость с различными окружениями выполнения — как в браузерах, так и на серверной стороне с помощью Node.js.
aria-query не зависит от DOM-браузера напрямую, что делает её подходящей для широкого спектра веб-сред. Основные моменты:
window или document для
инициализации. Это позволяет подключать её в проектах, где DOM может
отсутствовать, например в серверной генерации страниц (SSR).import { roles } from 'aria-query'. Для
старых окружений доступен вариант через require.roles и elementRoles построены на
Map и Set, которые поддерживаются во всех
актуальных версиях браузеров, начиная с ES6.Библиотека полностью совместима с Node.js:
Map,
Set). Минимальная рекомендованная версия — Node 10 и
выше.Пример использования в Node.js:
const { roles } = require('aria-query');
console.log(roles.has('button')); // true
console.log(roles.get('button').props.has('aria-pressed')); // проверка доступного свойства
aria-query активно используется в тестировании:
elementRoles для
проверки соответствия разметки ожидаемым ролям.Map и
Set, потребуется полифил.import { elementRoles } from 'aria-query';
const roleSet = elementRoles.get('button');
console.log(roleSet.has('button')); // true
import { roles } from 'aria-query';
const buttonRole = roles.get('button');
if (buttonRole.props.has('aria-pressed')) {
console.log('Поддерживается атрибут aria-pressed');
}
Совместимость aria-query с разными окружениями делает её универсальным инструментом для анализа доступности как на клиенте, так и на сервере. Универсальные структуры данных, отсутствие зависимости от DOM и поддержка современных модульных систем обеспечивают стабильную работу в большинстве современных проектов.