mirror of
https://gitlab.lewandowscy.pro/maciej/threeoffscreen.git
synced 2026-07-17 13:52:33 +00:00
No description
- JavaScript 85.8%
- CSS 10.7%
- HTML 3.5%
| src | ||
| .gitignore | ||
| index.html | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| server.js | ||
Konfigurator Szafek
Minimalny szkielet aplikacji webowej pod dalszą rozbudowę konfiguratora szafek.
Start
npm run dev
Aplikacja uruchomi lokalny serwer na http://localhost:4173.
W PowerShellu z restrykcyjną polityką wykonania użyj:
npm.cmd run dev
Jeśli chcesz uruchomić serwer bez automatycznego otwierania przeglądarki:
$env:NO_OPEN="1"; npm.cmd run dev
Co jest gotowe
- layout 50/50: panel narzędzi i panel wizualizacji,
- przełącznik zamieniający strony paneli,
- renderowanie w
Web Workerz użyciemOffscreenCanvas, - centralny
command busdla komend UI, - synchronizacja stanu z URL i
history.pushState, - obsługa
back/forwardzarówno z UI, jak i z przycisków przeglądarki, - hot reload frontendu przez
SSE, - automatyczne otwieranie przeglądarki po starcie serwera,
- scena
three.jsw workerze z orbit controls.
Sterowanie sceną
- lewy przycisk myszy: orbit,
- prawy przycisk lub środkowy: pan,
- kółko myszy: zoom.
Mechanizm routingu i komend
Każda akcja UI jest reprezentowana przez obiekt komendy:
{
type: "scene/cycle-module",
payload: {},
meta: {
source: "ui",
history: "push"
}
}
Przepływ jest następujący:
- UI emituje komendę do
command bus. - Reducer aktualizuje centralny snapshot stanu.
historyControllerzapisuje stan do URL ihistory.pushState.rendererControllerwysyła do workera tylko polecenia renderingu.popstateodtwarza snapshot i odpala ten sam pipeline bez dopisywania nowej historii.
Gdzie rozbudowywać
- nowe trasy:
src/app/history/urlState.js, - nowe komendy:
src/shared/protocol.js, - logika stanu:
src/app/state/reducer.js, - przekazywanie efektów do renderera:
src/app/commands/commandBus.js, - rendering:
src/worker/render.worker.js.