cesko-digital / app

Komunitní aplikace Česko.Digital
https://app.cesko.digital
BSD 3-Clause "New" or "Revised" License
22 stars 39 forks source link

Přepsat do Next.js #400

Closed zoul closed 2 years ago

zoul commented 2 years ago

Chtěli bychom zkusit přepsat web z Gatsbyho do Next.js, hlavně kvůli zjednodušení celkové architektury. Budu si sem k tomu odkládat poznámky.

Aktuální verze k vidění na https://next.cesko.digital.

TODO

Gotchas

Výstupní poznámky

Odškrtnutý checkbox tady neznamená nutně, že je daná věc implementovaná; větší část se přeměnila na samostatný ticket.

Seznam závislostí ke zbavení se

Tohle používáme, ale třeba jen na málo místech nebo jen kvůli jedné věci, tak nemohli bychom se jich zbavit?

Poznámky k architektuře

zoul commented 2 years ago

Odložím si sem z hlavy: Next kvůli architektuře vyžaduje, aby všechny props byly serializovatelné do JSON:

We need to serialize the result of getStaticProps/getServerSideProps because it has to be sent to the browser to do hydration.

To je velká pruda, pokud chceme používat například hodnoty typu Date. Ty kolečko serializace/deserializace (JSON.parse(JSON.stringify(data))) nepřežijou, skončí jako string. Zatím by mně přišlo ideální, kdyby Next měl nějakou podporu pro serializaci a deserializaci těch props, což zřejmě nemá. Knihovna superjson nabízí nějaký transparentní workaround, na který by stálo za to mrknout (tady?).

K deserializaci datumů viz též Stack Overflow.

zoul commented 2 years ago

Mergnuto, ale ještě nechám otevřené, ať můžu zapracovat ty výstupní poznámky.