Az Önhöz hasonló olvasók támogatják a MUO-t. Amikor a webhelyünkön található linkek használatával vásárol, társult jutalékot kaphatunk.
A renderelés a React kód HTML formátumba konvertálásának folyamata. A választott megjelenítési módszer attól függ, hogy milyen adatokkal dolgozik, és mennyire törődik a teljesítményével.
A Next.js-ben a renderelés nagyon sokoldalú. Megjelenítheti az oldalakat kliens- vagy szerveroldalon, statikusan vagy növekményesen.
Tekintse meg, hogyan működnek ezek a módszerek, és mindegyik hogyan teljesít.
Szerveroldali renderelés
A szerveroldali rendering (SSR) esetén, amikor a felhasználó felkeres egy weboldalt, a böngésző kérést küld a szervernek az adott oldalra vonatkozóan. A szerver szükség esetén lekéri a szükséges adatokat az adatbázisból, és az oldal tartalmával együtt elküldi a böngészőnek. A böngésző ezután megjeleníti a felhasználó számára.
A böngésző ezt a kérést minden hivatkozásra végrehajtja, amelyre a felhasználó kattint, ami azt jelenti, hogy a szerver minden alkalommal feldolgozza a kérést.
Ez csökkentheti a webhely teljesítményét. A szerveroldali megjelenítés azonban tökéletes olyan oldalakhoz, amelyek dinamikus adatokat fogyasztanak.
A getServerSideProps segítségével minden alkalommal újjáépítheti az oldalt, amikor egy felhasználó kéri.
exportalapértelmezettfunkcióitthon({ adat }) {
Visszatérés (
<fő->
// Használatadat
</main>
);
}exportasyncfunkciógetServerSideProps() {
// Adatok lekérése külső API-ból
const res = várja fetch('https://.../data')
const adatok = várja res.json()
// Kellékként átkerül az oldalkomponenshez
Visszatérés { kellékek: { adat } }
}
A getServerSideProps csak a szerveren fut, és így fut:
- Amikor a felhasználó közvetlenül hozzáfér az oldalhoz, az a kérés időpontjában lefut, és az oldal előre megjelenítődik a visszaadott kellékekkel.
- Amikor a felhasználó egy Következő hivatkozáson keresztül éri el az oldalt, a böngésző kérést küld az azt futtató szervernek.
Az új verzióban engedélyezheti a szerveroldali megjelenítést dinamikus adatlehívások segítségével egy oldalon vagy egy elrendezésben.
A dinamikus adatlehívások olyan fetch() kérések, amelyek kifejezetten letiltják a gyorsítótárazást azáltal, hogy a cache beállítást „no-store” értékre állítják.
fetch('https://...', { gyorsítótár: 'bolt nélküli' });
Alternatív megoldásként állítsa az újraérvényesítést 0-ra:
fetch('https://...', { next: { revalidate: 0 } });
Ez a funkció jelenleg béta állapotban van, ezért ne feledje. A dinamikus adatlekérésekről bővebben itt olvashat Next.js 13 béta dokumentumok.
Kliens oldali renderelés
Használjon ügyféloldali megjelenítést (CSR), ha gyakran kell frissítenie az adatokat, vagy ha nem szeretné előre megjeleníteni az oldalt. A CSR-t oldal- vagy komponensszinten is megvalósíthatja. Az oldal szintjén a Next.js lekéri az adatokat futási időben, és ha az összetevő szintjén megtörténik, akkor a csatlakoztatáskor. Emiatt a CSR hozzájárulhat a lassú teljesítményhez.
Használja a useEffect() hook oldalak megjelenítéséhez a kliensen, így:
import { useState, useEffect } tól től 'reagál'
funkcióitthon() {
const [data, setData] = useState(nulla)
const [isLoading, setLoading] = useState(hamis)useEffect(() => {
setLoading(igaz)fetch('/api/get-data')
.then((res) => res.json())
.then((data) => {
setData (adat)
setLoading(hamis)
})
}, [])ha (isLoading) visszatér <p>Betöltés...</p>
ha (!adat) visszatér <p>Nincs adat</p>
Visszatérés (
<div>
// Használatadat
</div>
)
}
Használhatja az SWR horgot is. Gyorsítótárazza az adatokat, és újraellenőrzi, ha elavulna.
import használd az SWR-t tól től 'swr'
const fetcher = (...args) => fetch(...args).then((res) => res.json())
funkcióitthon() {
const { adat, hiba } = useSWR('/api/adat', lekérő)
ha (hiba) visszatér <div>Nem sikerült betölteni</div>
ha (!adat) visszatér <div>Betöltés...</div>
Visszatérés (
<div>
// Használatadat
</div>
)
}
A Next.js 13-ban ügyfélösszetevőt kell használnia a "use client" direktíva hozzáadásával a fájl tetején.
"használatügyfél";
exportalapértelmezett () => {
Visszatérés (
<div>
// Kliens komponens
</div>
);
};
A különbség az SSR és a CSR között az, hogy az adatok az SSR-ben a szerver minden oldalkérésekor, míg a CSR-ben az ügyféloldalon kerülnek lekérésre.
Statikus webhely generálása
Statikus helygenerálással (SSG), az oldal adatokat tölt le egyszer az építési idő alatt. A statikusan generált oldalak nagyon gyorsak és jól teljesítenek, mivel minden oldal előre elkészül. Az SSG ezért tökéletes olyan oldalakhoz, amelyek statikus tartalmat használnak, például értékesítési oldalak vagy blogok.
A Next.js programban exportálnia kell a getStaticProps függvényt a statikusan megjeleníteni kívánt oldalra.
exportalapértelmezettfunkcióitthon({ adat }) {
Visszatérés (
<fő->
// Használatadat
</main>
);
}exportasyncfunkciógetStaticProps() {
// Adatok lekérése a külső API-ból összeállításkor
const res = várja fetch('https://.../data')
const adatok = várja res.json()
// Kellékként átkerül az oldalkomponenshez
Visszatérés { kellékek: { adat } }
}
A getStaticProps-on belül is lekérdezheti az adatbázist.
exportasyncfunkciógetStaticProps() {
// Hívásfunkciónak nekelhozniadattól tőladatbázis
const adatok = várja getDataFromDB()
Visszatérés { kellékek: { adat } }
}
A Next.js 13-ban a statikus megjelenítés az alapértelmezett, és a tartalom lekérése és gyorsítótárazása történik meg, hacsak nem kapcsolja ki a gyorsítótárazási beállítást.
asyncfunkciógetData() {
const res = várja fetch('https://.../data');
Visszatérés res.json();
}
exportalapértelmezettasyncfunkcióitthon() {
const adatok = várja getData();
Visszatérés (
<fő->
// Használatadat
</main>
);
}
Tudj meg többet statikus megjelenítés a Next.js 13-ban a doksiból.
Növekményes statikus generálás
Vannak esetek, amikor az SSG-t szeretné használni, de rendszeresen frissíteni szeretné a tartalmat. Itt segít az inkrementális statikus generálás (ISG).
Az ISG lehetővé teszi statikus oldalak létrehozását vagy frissítését, miután elkészítette őket a megadott időintervallum után. Így nem kell újraépítenie a teljes webhelyet, csak azokat az oldalakat, amelyeknek szüksége van rá.
Az ISG megtartja az SSG előnyeit, azzal a plusz előnnyel, hogy naprakész tartalmat kínál a felhasználóknak. Az ISG tökéletes a webhely azon oldalaihoz, amelyek változó adatokat fogyasztanak. Például megteheti használja az ISR-t a blogbejegyzések megjelenítéséhez így a blog naprakész marad, amikor bejegyzéseket szerkeszt vagy újakat ad hozzá.
Az ISR használatához adja hozzá a revalidate propot a getStaticProps függvényhez egy oldalon.
exportasyncfunkciógetStaticProps() {
const res = várja fetch('https://.../data')
const adatok = várja res.json()
Visszatérés {
kellékek: {
adat,
},
újraérvényesítés: 60
}
}
Itt a Next.js megpróbálja újraépíteni az oldalt, ha 60 másodperc után érkezik egy kérés. A következő kérésre a frissített oldallal válaszolunk.
A Next.js 13-ban használja a revalidate-ot a lekérésben, így:
fetch('https://.../data', { next: { revalidate: 60 } });
Beállíthatja az időintervallumot arra, ami a legjobban működik az adatokkal.
Hogyan válasszunk renderelési módot
Eddig megismerte a Next.js négy megjelenítési módszerét – CSR, SSR, SSG és ISG. Ezen módszerek mindegyike különböző helyzetekben megfelelő. A CSR hasznos azoknál az oldalakon, ahol friss adatokra van szükség, ahol az erős SEO nem aggodalomra ad okot. Az SSR olyan oldalakhoz is kiváló, amelyek dinamikus adatokat fogyasztanak, de SEO-barátabb.
Az SSG olyan oldalakhoz alkalmas, amelyek adatai többnyire statikusak, míg az ISG olyan oldalakhoz, amelyek időközönként frissíteni kívánt adatokat tartalmaznak. Az SSG és az ISG nagyszerűek a teljesítmény és a SEO szempontjából, mivel az adatok előre le vannak töltve, és gyorsítótárazhatók.