OOUI

Бесплатно
Открытый исходный код

Сайт: www.mediawiki.org/wiki/OOUI

OOUI — библиотека пользовательского интерфейса, разработанная для создания объектно-ориентированных, доступных и интернационализированных веб-интерфейсов. Проект предоставляет компонентную модель, ориентированную на повторное использование элементов управления и их состояние, обеспечивая согласованный внешний вид и поведение в приложениях с большим числом форм и панелей управления. Библиотека реализована на JavaScript с набором сопутствующих CSS-стилей и предназначена для интеграции в веб‑проекты, где важны расширяемость и поддерживаемость кода.

Основные цели OOUI включают поддержку семантической структуры виджетов, соблюдение правил доступности (включая работу с клавиатурой и совместимость с экранными читалками) и упрощение локализации интерфейсов. Исторически библиотека развивалась как часть экосистемы инструментов одной крупной организации, но её концепции и архитектура типичны для компонентных UI‑фреймворков: разделение логики и представления, наследование и композиция виджетов, а также механизм шаблонов и конфигурации. При недостатке публичной документации в тексте отмечено, что конкретные реализации и API могут меняться со временем.

  • Компонентная архитектура: виджеты как объекты с состоянием, методами и событиями для лёгкого повторного использования и расширения.
  • Доступность (a11y): встроенная поддержка ролей ARIA, управления фокусом и клавиатурных взаимодействий.
  • Интернационализация: способ интеграции переводимых строк и форматирования для многоязычных интерфейсов.
  • Стилизация и темing: модульные CSS‑настройки, позволяющие применять сквозные темы и согласованный визуальный язык.
  • Формы и элементы управления: набор стандартных контролов (кнопки, поля ввода, выпадающие списки, диалоги) с единым поведением.
  • Событийная модель: унифицированный механизм событий и обратных вызовов для взаимодействия между виджетами.
  • Расширяемость: механизмы наследования и миксинов для создания специализированных компонентов поверх базовых классов.
  • Разделение логики и представления: чёткое разграничение между API компонентов и их визуальным исполнением, что облегчает тестирование и сопровождение.
Подробнее