Інтерактивний інструмент для візуалізації та навчання принципів роботи JavaScript Event Loop. Сучасний веб-додаток на React з красивим UI, що допомагає розробникам зрозуміти асинхронність JavaScript, порядок виконання операцій та взаємодію між Call Stack, Web APIs, та чергами Microtask і Task (Callback).
- Сучасний дизайн з shadcn/ui компонентами та responsive сайдбаром
- Темна та світла тема з автоматичним перемиканням
- Повністю адаптивний дизайн для мобільних, планшетів та десктопів
- Інтелектуальний сайдбар:
- Автоматично згортається на вузьких екранах (тільки іконки)
- Розгортається на широких екранах з повним текстом
- Перемикається клавішею
B
- Плавні анімації та переходи між станами
- Інтуїтивний інтерфейс з tooltips та підказками
- Чистий UI - порожні секції автоматично ховаються
- Візуалізація Call Stack, Web APIs, Microtask Queue, Task Queue, Stack та Heap пам'яті
- Покрокове виконання з детальними поясненнями кожної дії
- 5 вбудованих прикладів:
- 🗄️ Пам'ять та Змінні - демонстрація Stack та Heap (примітиви, об'єкти, функції)
- ⏱️ setTimeout - базова робота з асинхронним кодом
- ⚡ Promise vs setTimeout - різниця між microtask та macrotask
- 🔄 Складний приклад - вкладені Promise та setTimeout
- 🌐 Fetch API - мережеві запити та їх обробка
- Два режими роботи: автоматичний та ручний
- Історія дій для відстеження всіх кроків виконання
- Відображення коду з підсвічуванням активного рядка
- Інтерактивний сайдбар з:
- Швидким запуском прикладів
- Кнопками очищення (повне та вибіркове)
- Довідкою по роботі Event Loop
- Keyboard shortcuts: Space, 0-4, A, B, C, Esc для швидкої роботи
- Українська мова (повна підтримка)
- English (auto-detected from browser)
- Перемикач мови в хедері для миттєвої зміни мови
- Вибрана мова зберігається між перезавантаженнями сторінки (localStorage)
- Всі елементи інтерфейсу, приклади та пояснення повністю перекладені
# Клонуйте репозиторій
git clone https://github.com/vitalii4reva/visual-js-event-loop.git
cd visual-js-event-loop
# Встановіть залежності
pnpm install
# Запустіть dev сервер
pnpm devВідкрийте http://localhost:3000 в браузері.
# Створіть production build
pnpm build
# Перегляньте production версію локально
pnpm previewBuild результат буде в теці dist/
- ⚛️ React 19 - UI framework
- 📘 TypeScript 5.9 - Type safety
- 🎨 Tailwind CSS 3.4 - Styling
- 🧩 shadcn/ui - UI компоненти
- ⚡ Vite 6 - Build tool
- 🎭 Lucide React - Іконки
- 🌓 next-themes - Theme management
src/
├── components/ # React компоненти
│ ├── ui/ # shadcn/ui компоненти (sidebar, button, card...)
│ ├── layout/ # Header, ExamplesSidebar, KeyboardShortcuts
│ ├── event-loop/ # Візуалізація Event Loop
│ │ ├── CallStack.tsx
│ │ ├── WebAPIs.tsx
│ │ ├── MicrotaskQueue.tsx
│ │ ├── TaskQueue.tsx
│ │ ├── Memory.tsx # Heap пам'ять
│ │ └── StackVariables.tsx # Stack frames
│ ├── controls/ # StepControls
│ └── panels/ # HistoryPanel
├── hooks/ # Custom React hooks
│ ├── useEventLoop.ts
│ ├── useStepExecution.ts
│ ├── useKeyboardShortcuts.ts
│ └── use-mobile.tsx
├── context/ # React Context (ThemeProvider)
├── lib/ # Утиліти та приклади
│ ├── examples.ts # 5 вбудованих прикладів
│ └── utils.ts
├── types/ # TypeScript типи
│ ├── eventLoop.ts
│ └── memory.ts
├── i18n/ # Переклади
├── App.tsx # Головний компонент
└── main.tsx # Entry point
Візуалізатор демонструє роботу JavaScript Event Loop та управління пам'яттю:
- Call Stack: Відображає функції, які зараз виконуються.
- Web APIs: Показує асинхронні операції, що виконуються у фоні.
- Microtask Queue: Черга високопріоритетних завдань (Promise).
- Task Queue: Черга регулярних завдань (setTimeout, setInterval).
- Stack Variables: Відображає локальні змінні у Stack Frames.
- Memory (Heap): Показує об'єкти, функції та інші складні типи даних.
- Event Loop: Постійно перевіряє стан стеку та черг, дотримуючись пріоритетів.
- Виконати весь синхронний код у Call Stack
- Перевірити чи Call Stack порожній
- Обробити ВСІ мікрозавдання з Microtask Queue
- Взяти ОДНЕ завдання з Task Queue
- Повторити з кроку 1
- Виберіть приклад в сайдбарі зліва (або клавіші 0-4):
- 0 - Пам'ять та Змінні (Stack & Heap)
- 1 - setTimeout демонстрація
- 2 - Promise vs setTimeout
- 3 - Складний приклад
- 4 - Fetch API
- Режим виконання:
- Ручний режим: Натискайте "Наступний крок" або Space/Enter
- Авто режим: Автоматичне виконання з затримкою 1.5 сек (клавіша A)
- Спостерігайте:
- Call Stack - активні функції
- Web APIs - асинхронні операції
- Microtask Queue - високопріоритетні завдання (Promise)
- Task Queue - звичайні завдання (setTimeout)
- Stack Variables - локальні змінні (з'являються в прикладі 0)
- Memory (Heap) - об'єкти та функції (з'являються в прикладі 0)
- Відстежуйте історію дій у правій панелі
- Керуйте сайдбаром - клавіша B або кнопка у header
- Keyboard shortcuts - Натисніть іконку клавіатури у header для переліку всіх скорочень
Ми заохочуємо внески в розвиток проекту!
- 🐛 Повідомте про баг через Issues
- ✨ Запропонуйте нову функцію
- 📝 Покращіть документацію
- 🌍 Додайте переклад на іншу мову
- 💻 Відправте Pull Request
- Fork репозиторію
- Створіть гілку:
git checkout -b feature/amazing-feature - Внесіть зміни та commit:
git commit -m 'Add amazing feature' - Push до гілки:
git push origin feature/amazing-feature - Відкрийте Pull Request
-
Додати Examples 3 та 4 (складний приклад, Fetch API)✅ -
Keyboard shortcuts (Space, числа, A, C)✅ -
Responsive сайдбар з shadcn/ui✅ -
Візуалізація Stack та Heap пам'яті✅ -
Приклад роботи з пам'яттю✅ - Інтерактивний режим для створення власних прикладів
- Експорт історії виконання
- Додаткові мови інтерфейсу (EN, PL)
- Анімації з Framer Motion
- Touch gestures для мобільних
Проект оптимізований для пошукових систем:
- ✅ Structured Data (JSON-LD) з інформацією про автора
- ✅ Open Graph та Twitter Cards
- ✅ robots.txt та sitemap.xml
- ✅ Оптимізовані meta теги
- ✅ humans.txt з інформацією про команду
- ✅ Bundle size: ~112 KB (gzipped)
Підтримка темної теми з автоматичним визначенням системних налаштувань
Повністю адаптивний дизайн для всіх пристроїв
Цей проект поширюється під ліцензією MIT. Див. файл LICENSE для деталей.
Vitalii Reva
- Email: vitalii4reva@gmail.com
- GitHub: @vitalii4reva
- Website: vitalii4reva.com
- Натхнення від освітніх матеріалів по JavaScript
- Спільнота React та TypeScript
- shadcn/ui за чудові компоненти
Зроблено з ❤️ в Україні 🇺🇦
⭐ Star на GitHub • 🐛 Повідомити про баг • 💡 Запропонувати функцію
