Об этом проекте
QimenJS — модульная TypeScript-инфраструктурная библиотека, название которой происходит от «Ци Мэнь Дунь Цзя» — древней системы построения войск. Она строит гибкую фронтенд-архитектуру через комбинацию способностей (Ability) и пайплайны данных (Pipeline), предоставляя систему событий, пайплайны данных, управление сущностями, интернационализацию, HTTP-клиент и другие 38 независимых подпакетов, охватывающих от базового до UI-уровня фронтенд-приложений.
Текущая версия — 0.2.0, находится на начальной стадии разработки. Основные API и слой UI-компонентов уже доступны, фреймворк-процесс работает, но API может измениться в последующих версиях.
Список пакетов организован по уровням:
- **Базовый уровень (Layer 0)**: единая система ошибок, система логирования, общие утилиты, асинхронные утилиты, определение среды выполнения, хеширование и кодеки, интернационализация, контекст запроса/события, общие базовые типы между пакетами.
- **Ядро (Layer 1)**: реестр, шина событий, управление кэшем, пайплайн данных, комбинация способностей, планирование задач.
- **Уровень данных (Layer 2)**: фреймворк обработчиков данных, движок валидации, адаптер DOM-событий (распознавание 8 жестов), разбор MIME-типов, реестр именованных регулярных выражений, определение схем, система разрешений.
- **Сервисный уровень (Layer 3)**: HTTP-клиент (4-этапный пайплайн + перехватчики + потоковая передача SSE), OAuth2-аутентификация (режимы пароля/кода авторизации/учётных данных клиента + автоматическое обновление при 401), обработчик данных фреймворка ABP, обработчик данных Spring Data, набор системных способностей.
- **Прикладной уровень (Layer 4)**: фреймворк управления сущностями (5 видов Manager + архитектура комбинации Ability), система маршрутизации (чисто событийная модель + компонентная способность RouteAbility).
- **UI-уровень**: базовая инфраструктура компонентов, определения способностей UI-компонентов, реализации UI-компонентов (Icon/Button/Toggle/Tabs/Card/Menu/Nav/Panel и др.), продвинутые UI-компоненты (Step/Timeline/Rating/PropertyGrid/OneTimePassword и др.), система определения макетов на основе JSON, ресурсы тем (светлая/тёмная + 10 пресетов в китайском стиле + пользовательские), библиотека иконок в китайском стиле (102 SVG + шрифтовые иконки), императивный API (toast/msgbox).
Особенности архитектуры включают многоуровневую структуру (однонаправленные зависимости, без перекрёстных ссылок между уровнями), комбинацию способностей (менеджеры сущностей динамически комбинируют способности через AbilityDefinition), пайплайнную обработку (запросы/ответы данных проходят через подключаемые пайплайны обработчиков, ABP/Spring работают из коробки), адаптацию к среде (пакеты ядра не зависят от среды, работают в браузере и Node.js), типобезопасность (полные определения типов TypeScript).
Каталог примеров `examples/full-stack/` содержит полную full-stack демонстрацию, охватывающую OAuth2-аутентификацию, управление пользователями через ABP API, управление заказами через Spring Data, страницы демонстрации функций 36 подпакетов QimenJS, интернационализацию (предкомпиляция i18n + динамическое переключение языка).
Документация включает описание архитектуры, описание пакетов, лучшие практики и справочник API. Команды разработки включают установку зависимостей, сборку, запуск тестов, проверку кода и генерацию API-документации. Номера версий следуют спецификации SemVer, 0.x.x означает начальную стадию разработки.
Этот проект разработан с помощью ИИ, большая часть кода сгенерирована ИИ. Благодарим за вклад инструменты Huawei CodeArts, Trae CN, ChatGPT, DeepSeek, Gemini, Tongyi Qianwen, FitEncode и другие. Лицензия — MIT.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.