(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': data().getTime(),įvykis:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-5LHNRP9'); Duomenų gavimo strategijos NextJS - The Codest
The Codest
  • Apie mus
  • Paslaugos
    • Programinės įrangos kūrimas
      • Priekinės dalies kūrimas
      • Galinės dalies kūrimas
    • Staff Augmentation
      • Priekinės dalies kūrėjai
      • Atgalinės versijos kūrėjai
      • Duomenų inžinieriai
      • Debesų inžinieriai
      • QA inžinieriai
      • Kita
    • Patariamoji tarnyba
      • Auditas ir konsultacijos
  • Pramonės šakos
    • Fintech ir bankininkystė
    • E-commerce
    • Adtech
    • Sveikatos technologijos
    • Gamyba
    • Logistika
    • Automobiliai
    • IOT
  • Vertė už
    • CEO
    • CTO
    • Pristatymo vadybininkas
  • Mūsų komanda
  • Case Studies
  • Sužinokite, kaip
    • Tinklaraštis
    • Susitikimai
    • Interneto seminarai
    • Ištekliai
Karjera Susisiekite su mumis
  • Apie mus
  • Paslaugos
    • Programinės įrangos kūrimas
      • Priekinės dalies kūrimas
      • Galinės dalies kūrimas
    • Staff Augmentation
      • Priekinės dalies kūrėjai
      • Atgalinės versijos kūrėjai
      • Duomenų inžinieriai
      • Debesų inžinieriai
      • QA inžinieriai
      • Kita
    • Patariamoji tarnyba
      • Auditas ir konsultacijos
  • Vertė už
    • CEO
    • CTO
    • Pristatymo vadybininkas
  • Mūsų komanda
  • Case Studies
  • Sužinokite, kaip
    • Tinklaraštis
    • Susitikimai
    • Interneto seminarai
    • Ištekliai
Karjera Susisiekite su mumis
Atgal rodyklė GRĮŽTI ATGAL
2020-09-10
Programinės įrangos kūrimas

Duomenų gavimo strategijos "NextJS

The Codest

Pawel Rybczynski

Software Engineer

Pastaruoju metu NextJS vis labiau populiarėja kaip React programų kūrimo būdas. Be abejo, prie to labai prisideda tai, kad NextJS siūlo kelias skirtingas duomenų gavimo strategijas.

Tai yra:

  • Atvaizdavimas kliento pusėje: CSR,
  • Atvaizdavimas serverio pusėje: SSR,
  • Statinis svetainės atvaizdavimas: SSG,
  • Inkrementinis statinis regeneravimas: ISR.

NextJS, skirtingai nei paprastas React programėlėje siūloma funkcija, vadinama išankstiniu atvaizdavimu. Tai reiškia, kad pradinio įkėlimo metu rodomas iš anksto atvaizduotas HTML. Tradicinėse React programose visa programa įkeliama ir atvaizduojama kliento pusėje. Tada, kai JS kodas įkeliama, programa tampa interaktyvi.

Statinis generavimas

SSG sistemoje HTML generuojamas kūrimo metu ir pakartotinai naudojamas kiekvienai užklausai. Sukūrus produkcinį surinkimą, kiekviena užklausa pakartotinai naudos šį statiškai sugeneruotą HTML failą.

Taip pat yra dviejų tipų statinis generavimas: su ir be duomenys.

Pirmuoju atveju HTML kodas bus sukurtas gavus duomenis išsprendus pažadą. Šiuo atveju galime naudoti duomenų gavimo metodą getStaticProps... bet tik jei naudojate Next.js 9.3 arba naujesnę versiją. Jei ne, pagalvokite apie atnaujinimą, nes senesnis getInitialProps metodas nebėra rekomenduojamas ir bus atšauktas. Šis metodas taip pat yra iškviečiamas kiekvienoje kliento pusėje esančioje navigacijoje, todėl jis nėra efektyvus, jei nenorite gauti duomenų kiekvienos užklausos metu.

eksportas async funkcija getStaticProps() {
  const res = await fetch("https://jsonplaceholder.typicode.com/posts");
  const posts = await res.json();
  return {
    props: { posts },
  };
} 

Tikrai šaunus dalykas yra naujai išleista funkcija, vadinama ISR (Incremental Static Regeneration), kuri yra kažkas tarpinio tarp SSG ir SSR. Ji leidžia (naudojant specialų raktą, vadinamą "revalidate") puslapį atkurti palaipsniui. Tai reiškia, kad naudojant šį raktą nereikia iš naujo kurti programos kiekvieną kartą, kai norite gauti iš serverio paimtų duomenų atnaujinimą. Tiesiog pridėkite raktą revalidate, nurodydami atnaujinimo laikotarpį sekundėmis.

eksportas async funkcija getStaticProps() {
  const res = await fetch("https://jsonplaceholder.typicode.com/posts");
  const posts = await res.json();
  return {
    props: {
      posts,
    },
    revalidate: 30,
  };
}

Tai reiškia, kad jei užklausos bus gautos po šio laikotarpio, jis vėl paims duomenis iš serverio.

Kitas atvejis - kai naudojate dinaminį puslapį, o kelias priklauso nuo tam tikrų išorinių duomenų. Tokiu atveju galime naudoti metodą getStaticPaths, nurodantį, kurie dinaminiai keliai turėtų būti iš anksto įkelti:

eksportuoti async const getStaticProps = ({ params }) => {
  const res = await fetch(`https://jsonplaceholder.typicode.com/posts/${params.id}`);
  const post = await res.json();
  return {
    rekvizitai: { post },
  };
}
eksportas async funkcija getStaticPaths() {
  const res = await fetch("https://jsonplaceholder.typicode.com/posts");
  const posts = await res.json();
  const paths = posts.map(({ id }) => ({ params: { id: `${id}` } } }));
  return {
    paths,
    fallback: false,
  };
}

Yra geras būdas patikrinti, kurie dinaminiai maršrutai buvo sukurti. Galite paleisti kitą kūrimą ir kitą eksportą, o po to turėsite statinę savo programos versiją naujai sukurtame out kataloge.

Dabar apribokime išankstinio kūrimo kelius:

eksportas async funkcija getStaticPaths() {
  return {
    paths: [{ { params: { id: "1" } }, { params: { id: "2" } } }],
    fallback: false,
  };
}

Atlikę kitą eksportą, galime pastebėti, kad abiem atvejais (su ribotu kelių skaičiumi ir be jo) skiriasi mano-appoutposts rastų pranešimų skaičius.

next_export

Dabar atidžiau pažvelkime į esminį ir būtiną atsarginį parametrą. Jis nurodo, ką daryti, jei puslapis nebuvo iš anksto atvaizduotas kūrimo metu. Jei jis nustatytas į true, paleidžiamas getStaticProps ir sugeneruojamas tas puslapis. Jei false, bandydami įkelti tą konkretų kelią gausime 404. Kitas dalykas: puslapių su grįžtamuoju ryšiu, kurie įjungti getStaticPaths, negalima eksportuoti.

Toliau pateikiami rezultatai, gauti bandant įkelti tą patį dinaminį puslapį abiem atvejais:

Pirmasis atvejis (be ribotų kelių)

pirmasis

Antrasis atvejis (su ribotais keliais ir grįžtamuoju nustatymu false)

antrasis<em>atsakomasis signalas</em>false

Antrasis atvejis (su ribotais keliais ir grįžtamuoju nustatymu true)

antrasis<em>atsakomasis</em>atsakomasis</em>true

Atvaizdavimas serverio pusėje

Pagrindinis skirtumas, palyginti su SSG, yra tas, kad kiekviena užklausa generuoja naują HTML. Tai dažniausiai naudojama, kai gauname išorinius duomenis. Tokiu atveju nereikia iš naujo kurti programos kiekvieną kartą, kai norime atnaujinti duomenis iš serverio.

eksportas async funkcija getServerSideProps() {
  const res = await fetch("https://jsonplaceholder.typicode.com/posts");
  const posts = await res.json();
  return {
    props: {
      posts,
    },
  };
}

GetServerSideProps metodas labai panašus į getStaticProps metodą. Skirtumas tas, kad getServerSideProps paleidžiamas kiekvieną užklausą, o getStaticProps paleidžiamas vieną kartą kūrimo metu.

Kliento pusės atvaizdavimas

Naudojant kliento pusės atvaizdavimą, pradinis puslapio įkėlimas yra šiek tiek lėtas. Ryšys su serveriu vyksta paleidimo metu. Galite tai daryti tradiciškesniu būdu:

const Dienoraštis = () => {


 const [posts, setPosts] = useState([]);
  useEffect(() => {
    const fetchData = async () => {
      const res = await fetch(
     "https://jsonplaceholder.typicode.com/posts");
      const posts = await res.json();
      setPosts(posts);
    };
    fetchData();
  }, []);

Taip pat galime naudoti kitą sprendimą, ‘swr’ - React "Hooks" biblioteką, skirtą "Vercel "* duomenų paėmimui, kurią primygtinai rekomenduoja "NextJS" kūrėjai. SWR reiškia State While Revalidate (būseną, kol patvirtinama).

* Duomenų šaltinis: SWR pagal "Vercel

importuoti useSWR iš "swr";


const Blog = () =&gt; {
 const fetcher = (url) =&gt; fetch(url).then((r) =&gt; r.json());
 const { data: posts = [], error } = useSWR(
    "https://jsonplaceholder.typicode.com/posts", fetcher);
 if (error) return <div>Nepavyko įkelti pranešimų</div>;
 if (!posts.length) return <div>pakrovimas...</div>;
 grąžinti (
    <>
      {posts.map((post) =&gt; (
            {post.title}
        ))}
    </>
}

Santrauka

NextJS suteikia mus papildoma galimybė pasirinkti, kurią iš duomenų gavimo strategijų norime naudoti kiekviename puslapyje. Mums nereikia laikytis tik vieno sprendimo visai programai.

Trumpasis adresas

  • getServerSideProps - kai reikia iš anksto atvaizduoti programą kiekvienoje užklausoje su gautais duomenimis.
  • getStaticProps - kai duomenys gali būti paimti vieną kartą kūrimo metu ir naudojami kiekvienoje užklausoje be jokių atnaujinimų.
  • getInitialProps - nerekomenduojama, bus panaikinta
  • getStaticPaths - išankstiniam dinaminių kelių atvaizdavimui
NextJs privalumai ir trūkumai
Skaitmeninių produktų kūrimo konsultacijos

Skaityti daugiau:

Rails API ir CORS. Sąmoningumo brūkšnelis

Kodėl turėtumėte (tikriausiai) naudoti Typescript?

Aukščiausios kokybės kodas jūsų SaaS projekte. Kodėl tai turėtų rūpėti jums kaip (ne techninio profilio) steigėjui?

Susiję straipsniai

Išmaniojo telefono sveikatos priežiūros programėlės su širdies piktograma ir kylančia sveikatos diagrama, pažymėtos The Codest logotipu, iliustracija, vaizduojanti skaitmeninės sveikatos ir sveikatos technologijų sprendimus.
Programinės įrangos kūrimas

Sveikatos priežiūros programinė įranga: Sveikatos priežiūros paslaugos: tipai, naudojimo atvejai

Įrankiai, kuriais šiandien naudojasi sveikatos priežiūros organizacijos, nė iš tolo neprimena prieš kelis dešimtmečius naudotų popierinių kortelių. sveikatos priežiūros programinė įranga dabar padeda sveikatos sistemoms, pacientų priežiūrai ir šiuolaikiniam sveikatos priežiūros paslaugų teikimui klinikinėse ir...

GERIAUSIAS
Abstrakti mažėjančios stulpelinės diagramos su kylančia rodykle ir auksine moneta, simbolizuojančia ekonomiškumą arba taupymą, iliustracija. Viršutiniame kairiajame viršutiniame kampe pavaizduotas The Codest logotipas ir šūkis "In Code We Trust" šviesiai pilkame fone.
Programinės įrangos kūrimas

Kaip padidinti savo Dev komandą neprarandant produkto kokybės

Didinate savo kūrėjų komandą? Sužinokite, kaip augti neprarandant produkto kokybės. Šiame vadove aptariami ženklai, kad atėjo laikas didinti komandą, komandos struktūra, įdarbinimas, vadovavimas ir įrankiai - ir kaip The Codest gali...

GERIAUSIAS
Programinės įrangos kūrimas

Sukurkite ateičiai atsparias žiniatinklio programas: The Codest ekspertų komandos įžvalgos

Sužinokite, kaip The Codest puikiai kuria keičiamo dydžio interaktyvias žiniatinklio programas, naudodama pažangiausias technologijas ir užtikrindama vientisą naudotojų patirtį visose platformose. Sužinokite, kaip mūsų patirtis skatina skaitmeninę transformaciją ir verslo...

GERIAUSIAS
Programinės įrangos kūrimas

10 geriausių Latvijoje įsikūrusių programinės įrangos kūrimo įmonių

Naujausiame mūsų straipsnyje sužinokite apie geriausias Latvijos programinės įrangos kūrimo įmones ir jų inovatyvius sprendimus. Sužinokite, kaip šie technologijų lyderiai gali padėti pakelti jūsų verslo lygį.

thecodest
Įmonių ir didinimo sprendimai

"Java" programinės įrangos kūrimo pagrindai: A Guide to outsourcing Outsourcing Successfully

Išnagrinėkite šį esminį vadovą, kaip sėkmingai outsourcing "Java" programinę įrangą kurti, kad padidintumėte efektyvumą, įgytumėte patirties ir sėkmingai įgyvendintumėte projektus su The Codest.

thecodest

Prenumeruokite mūsų žinių bazę ir būkite nuolat informuoti apie IT sektoriaus patirtį.

    Apie mus

    The Codest - tarptautinė programinės įrangos kūrimo bendrovė, turinti technologijų centrus Lenkijoje.

    Jungtinė Karalystė - būstinė

    • 303B biuras, 182-184 High Street North E6 2JA
      Londonas, Anglija

    Lenkija - vietiniai technologijų centrai

    • Fabryczna biurų parkas, Aleja
      Pokoju 18, 31-564 Krokuva
    • Brain Embassy, Konstruktorska
      11, 02-673 Varšuva, Lenkija

    The Codest

    • Pagrindinis
    • Apie mus
    • Paslaugos
    • Case Studies
    • Sužinokite, kaip
    • Karjera
    • Žodynas

    Paslaugos

    • Patariamoji tarnyba
    • Programinės įrangos kūrimas
    • Galinės dalies kūrimas
    • Priekinės dalies kūrimas
    • Staff Augmentation
    • Atgalinės versijos kūrėjai
    • Debesų inžinieriai
    • Duomenų inžinieriai
    • Kita
    • QA inžinieriai

    Ištekliai

    • Faktai ir mitai apie bendradarbiavimą su išoriniu programinės įrangos kūrimo partneriu
    • Iš JAV į Europą: Kodėl Amerikos startuoliai nusprendžia persikelti į Europą?
    • Technikos plėtros centrų užsienyje palyginimas: Tech Offshore Europa (Lenkija), ASEAN (Filipinai), Eurazija (Turkija)
    • Kokie yra svarbiausi CTO ir CIO iššūkiai?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Website terms of use

    Autorinės teisės © 2026 The Codest. Visos teisės saugomos.

    lt_LTLithuanian
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish arArabic it_ITItalian es_ESSpanish nl_NLDutch etEstonian elGreek pt_PTPortuguese cs_CZCzech lvLatvian is_ISIcelandic lt_LTLithuanian