Aria-query — это специализированная библиотека для работы с ARIA-атрибутами и ролями в DOM. Она позволяет проверять соответствие элементов стандартам доступности, получать список поддерживаемых ролей и атрибутов, а также проводить анализ HTML-кода на предмет корректного использования ARIA.
Для работы с библиотекой необходимо наличие Node.js и пакетного менеджера npm. Установка выполняется одной командой:
npm install aria-query
Эта команда загружает последнюю стабильную версию библиотеки и добавляет её в зависимости проекта. После установки можно проверить версию для уверенности:
npm list aria-query
В современных проектах на JavaScript (ES6+) рекомендуется использовать import:
import { roles, aria } from 'aria-query';
В проектах с CommonJS-подходом используется require:
const { roles, aria } = require('aria-query');
После подключения можно убедиться, что объекты доступны:
console.log(Object.keys(roles).length); // Количество ролей
console.log(Object.keys(aria).length); // Количество атрибутов
Совместимость с TypeScript Библиотека предоставляет собственные типы, что позволяет использовать её в TypeScript без необходимости установки дополнительных пакетов:
import { roles } from 'aria-query';
const buttonRole = roles.get('button');
console.log(buttonRole.name); // name — объект с описанием свойства ролиРабота с серверными и клиентскими проектами
aria-query не зависит от DOM-окружения, поэтому её можно
использовать как в Node.js для серверного анализа HTML, так и в браузере
для динамических проверок компонентов.
Совместное использование с линтерами и тестовыми
фреймворками Библиотека идеально интегрируется с инструментами
типа eslint-plugin-jsx-a11y или тестами на
jest, где требуется проверка ARIA-ролей и атрибутов на
корректность.
roles Представляет собой Map, где ключ — название роли, а значение — объект с описанием:
{
name: { name: 'button', required: false },
superclass: ['command'],
props: {
'aria-disabled': { value: [true, false], required: false }
},
requiredContextRole: []
}aria Объект, где ключ — ARIA-атрибут, а значение — массив допустимых значений:
{
'aria-hidden': [true, false],
'aria-label': ['string'],
'aria-expanded': [true, false, 'mixed']
}Для проверки, поддерживает ли элемент определённую роль:
import { roles } from 'aria-query';
const roleName = 'checkbox';
if (roles.has(roleName)) {
const role = roles.get(roleName);
console.log(role.superclass); // ['input', 'selectable']
}
Для проверки допустимых значений ARIA-атрибута:
import { aria } from 'aria-query';
const attr = 'aria-expanded';
console.log(aria[attr]); // [true, false, 'mixed']
aria-query обеспечивает детальный контроль за
ARIA-ролями и атрибутами, позволяет стандартизировать подход к
доступности интерфейсов и снижает риск ошибок при разработке
компонентов.