2mqjs
v0.0.4
Published
Архитектурная микробиблиотека для веб-приложений без фреймворков: компоненты, шина событий, воркеры, задачи, стор.
Readme
2mqjs — Микроархитектура для Web-приложений
2mqjs — архитектурная микробиблиотека для веб‑приложений без тяжёлых фреймворков. Даёт чёткую структуру: разделяет UI, бизнес‑логику, коммуникацию и порядок инициализации.
📚 Модули
- Components — ленивые UI‑модули
- Ports — единая событийная шина
- Workers — бизнес‑логика вне main thread
- Tasks — планировщик инициализаций и сценариев
- Store — глобальное состояние вне основного потока
✨ Особенности
- Декомпозиция на изолированные слои.
- Ленивая инициализация UI и тяжёлой логики.
- Единая событийная шина для всех слоёв.
- Планировщик запуска и зависимостей.
- Минимальный вес, строгая типизация.
📦 Установка
npm i 2mqjs
# или
yarn add 2mqjs
# или
pnpm add 2mqjspackage.json:
{
"type": "module"
}🧩 Быстрый старт
1) Worker
import { registerWorker, emitPort } from '2mqjs/workers';
await registerWorker({
name: 'productData',
src: () => import('./workers/productData.worker?worker'),
});
emitPort('productData:init', initialState);2) Component
import { registerComponent, runComponentLoader } from '2mqjs/components';
registerComponent({
name: 'product-card',
load: () => import('./components/product-card'),
when: 'visible',
hasDisplay: true,
});
runComponentLoader();3) Tasks
import { registerTask, runTasks } from '2mqjs/tasks';
registerTask({
id: 'bootstrap-product-data',
stage: 'bootstrap',
run: async () => {
// ...
},
});
await runTasks();🛠 Рецепты
- Store — глобальное состояние в воркере с persist (docs)
- Tasks + Workers — ожидание готовности и запуск сценариев
- Components + Ports — UI реагирует на события без прямых связей
🧾 Лицензия
📌 Полная документация — в папке docs/
