Fordeler og ulemper med NextJs
Fordelene til NextJs er mange. Jeg ville brukt NextJs hovedsaklig når
- søkemotoroptimalisering og synlighet er viktig for kunden
- topp hastighet for bruker er et krav
- en skal bare utvikle statiske sider og rene html-filer ikke er godt nok (for eksempel tekst og data kommer fra en database)
- bruker ikke nødvendigvis har JS i nettleseren
Siden NextJs serverer bruker ferdig generert HTML trenger man ikke nødvendigvis tenke på sitemaps og slikt da en hver søkemotor lett greier å navigere seg rundt i en HTML-side. Videre har man mulighet til å legge de ferdig genererte sidene på en CDN slik at selve HTML-en blir servert så nære bruker som mulig.
Hvis gjort riktig kan NextJs være utrolig raskt for en sluttbruker. Ta denne siden for eksempel. Hvis du navigerer deg rundt vil du se at hver side nesten umiddelbart blir lastet. Siden er så rask fordi alt du kan trykke på i en gitt side allerede er lastet ned på forhånd. Hvis du åpner opp nettverks-tabben i dev tools vil du se at alle interne linker er lastet på forhånd. Det betyr at når en bruker trykker på en link så er innholdet allerede lastet ned - det vil si den statiske dataen en gitt side krever for å rendres. Når en bruker så trykker på linken vil siden rendres basert på disse propsene på klienten (gitt at bruker har Javascript på og linkene er satt opp riktig i koden).
Det er skjelden at en bruker ikke har JS slått på i nettleseren, men om en ikke skulle ha det og klientsidekode er minimal og ikke-kritisk går det fint an å lese nettsiden uten Javascript.
Fordeler med NextJs
Typiske sider jeg ville brukt NextJs på er
- ecommerce-sider
- nettaviser og nyhetssider (har ikke noe forhold til utvikling av nettaviser, men på papiret burde det passe fint)
- blogger
- ABSOLUTT ALT !
Ulemper med NextJs
Av frontends jeg skulle utviklet i dag ville jeg nok valgt NextJs (eller tilsvarende SSR/SSG-baserte rammeverk) uansett, mye fordi at gevinsten er så stor i forhold til ulempene. Til tross for dette er det et par områder hvor en kanskje ikke vil eller bør bruke det.
- Sider med mye interaktiv JS-basert logikk
- Innloggede sider
- Det er ikke alltid like lett å kombinere NextJs med komponentbiblioteker eller eksisterende systemer som ikke spesifikt er utviklet for NextJs
I tillegg kan det være trøblete hvis en statisk generert side endrer innhold ofte og en cacher siden hos en CDN eller hos sluttbruker. Da kan man forvente å finne foreldet innhold.