UI Arkitektur
December 18, 2018•234 words
Immutable Web App
Förslag
tm-client bygger och publicerar en versionerad js bundle till en cdn första gången den byggs (dev bygget?)
cdn:en cachas alltid (
cache-control: public, max-age=31536000, immutable
)index.html refererar till den versionen av bundlen och deployas i Kubernetes servicen
index.html cachas aldrig (
cache-control: no-store
)tm-client servicen injectar environment variabler i index.html via globala variablar som js bundlen sedan kan referera till (t ex. Sentry token, AI instrumentation key)
- vi behöver förmodligen byta till node/express istället för nginx
React
Lokal state vs global state
lokal state innebär även att data inladdning måste ske lokalt och att api datan endast är tillgängligt lokalt (eller kan skickas neråt i trädet, men aldrig uppåt)
utspridd lokal state har traditionellt sett varit ett utmaning att hantera på ett pålitligt och tydligt sett (därav Flow/Redux/osv uppfanns)
lokal state är det React är byggt för och något som uppmuntras av React teamet genom att bygga bättre verktyg för att hantera det (hooks, suspense, osv), även Apollo är väl anpassat för att exekvera queries och muteringar nere i komponenter istället för ovanför (i t ex. Redux)
JavaScript inte helt anpassat för att arbeta med endast global, immutable state (dictionary api:er saknas, något som är användbart när man editerar data)
oklart hur nya React features som suspense/time-slicing kommer fungera med global state (t ex. Redux)