window.pipedriveLeadboosterConfig = { base: leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(function () { var w = window if (w.LeadBooster) { console.warn('LeadBooster on juba olemas') } else { w.LeadBooster = { q: [], on: function (n, h) { this.q.push({ t: 'o', n: n, h: h }) }, trigger: function (n) { this.q.push({ t: 't', n: n }) }, } } })() Andmete otsimise strateegiad NextJS-is - The Codest
The Codest
  • Meie kohta
  • Teenused
    • Tarkvaraarendus
      • Frontend arendus
      • Backend arendus
    • Staff Augmentation
      • Frontend arendajad
      • Backend arendajad
      • Andmeinsenerid
      • Pilveinsenerid
      • QA insenerid
      • Muud
    • See nõuandev
      • Audit ja nõustamine
  • Tööstusharud
    • Fintech & pangandus
    • E-commerce
    • Adtech
    • Healthtech
    • Tootmine
    • Logistika
    • Autotööstus
    • IOT
  • Väärtus
    • CEO
    • CTO
    • Tarnejuht
  • Meie meeskond
  • Case Studies
  • Tea kuidas
    • Blogi
    • Kohtumised
    • Veebiseminarid
    • Ressursid
Karjäärivõimalused Võtke ühendust
  • Meie kohta
  • Teenused
    • Tarkvaraarendus
      • Frontend arendus
      • Backend arendus
    • Staff Augmentation
      • Frontend arendajad
      • Backend arendajad
      • Andmeinsenerid
      • Pilveinsenerid
      • QA insenerid
      • Muud
    • See nõuandev
      • Audit ja nõustamine
  • Väärtus
    • CEO
    • CTO
    • Tarnejuht
  • Meie meeskond
  • Case Studies
  • Tea kuidas
    • Blogi
    • Kohtumised
    • Veebiseminarid
    • Ressursid
Karjäärivõimalused Võtke ühendust
Tagasi nool TAGASI
2021-04-09
Tarkvaraarendus

NextJS-i andmete hankimise strateegiad

The Codest

Pawel Rybczynski

Software Engineer

Viimasel ajal kogub NextJS üha suuremat populaarsust React rakenduste loomise viisina. Kindlasti aitab sellele oluliselt kaasa asjaolu, et NextJS pakub mitmeid erinevaid andmehõivamisstrateegiaid.

Ja need on järgmised:

  • Kliendipoolne renderdamine: CSR,
  • Serveripoolne renderdamine: SSR,
  • Staatiline saidi kuvamine: SSG,
  • Inkrementaalne staatiline regenereerimine: ISR.

NextJS pakub erinevalt tavalisest React rakendusest funktsiooni, mida nimetatakse eelrenderdamiseks. See tähendab, et esialgse laadimise ajal kuvatakse eelrenderdatud HTML-i. Traditsioonilistes React rakendustes laaditakse ja renderdatakse kogu rakendus kliendi poolel. Seejärel, pärast JS kood laaditakse, muutub rakendus interaktiivseks.

Staatiline põlvkond

SSGs genereeritakse HTML vormingu koostamise ajal ja seda kasutatakse iga taotluse puhul uuesti. Pärast tootmiskoostu loomist kasutab iga taotlus seda staatiliselt genereeritud HTML-faili uuesti.

Samuti on olemas kahte tüüpi staatilist genereerimist: andmetega ja ilma andmeteta.

Esimesel juhul genereeritakse HTML pärast andmete kättesaamist lubaduse lahendamise teel. Sellisel juhul saame kasutada andmete kättesaamise meetodit getStaticProps... aga ainult siis, kui kasutate Next.js 9.3 või uuemat versiooni. Kui mitte, siis mõelge selle uuendamisele, sest vanem getInitialProps meetod ei ole enam soovitatav ja see kaotab kehtivuse. Seda meetodit kutsutakse ka igas kliendipoolses navigeerimises, nii et see ei ole tõhus, kui te ei soovi andmeid iga päringu puhul välja noppida.

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

Tõeliselt lahe on äsja avaldatud funktsioon nimega ISR (Incremental Static Regeneration), mis on midagi SSG ja SSR vahelist. See võimaldab teil (kasutades spetsiaalset võtit nimega revalidate) teha lehte järk-järgult uuendada. See tähendab, et selle võtmega ei pea te rakenduse iga kord uuesti üles ehitama, kui soovite serverist hangitud andmeid uuendada. Lihtsalt lisage revalidate võti koos revalideerimisperioodiga sekundites.

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

See tähendab, et kui päringud tulevad pärast seda ajavahemikku, siis hangib ta andmed uuesti serverist.

Teine olukord on, kui kasutate dünaamilist lehte ja tee sõltub mõnest välisest andmestikust. Sellisel juhul saame kasutada meetodit getStaticPaths, mis ütleb, milliseid dünaamilisi marsruute tuleks eelnevalt laadida:

eksport async const getStaticProps = ({ params }) => {
  const res = await fetch(`https://jsonplaceholder.typicode.com/posts/${params.id}`);
  const post = await res.json();
  return {
    props: { post },
  };
}
eksport async function 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,
  };
}

On hea võimalus kontrollida, millised dünaamilised marsruudid on loodud. Saate käivitada järgmise buildi ja järgmise ekspordi ning pärast seda on teie rakenduse staatiline versioon äsja loodud out-kataloogis.

Piirame nüüd ehitamiseelsed teed:

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

Pärast järgmise ekspordi käivitamist võime täheldada mõlemal juhul (piiratud arvu teedega ja ilma) erinevat arvu postitusi, mis on leitud my-appoutposts'is.

next_export

Vaatleme nüüd lähemalt olulist ja vajalikku tagavaraparameetrit. See ütleb, mida teha, kui lehte ei ole build-time'i ajal eelnevalt renderdatud. Kui selle väärtuseks on seatud true, käivitub getStaticProps ja genereerib selle lehe. Kui false, siis saame pärast selle konkreetse tee laadimise katsetamist tulemuseks 404. Veel üks asi: lehed, mille fallback on getStaticPathsis lubatud, ei saa eksportida.

Allpool on esitatud tulemused, mis saadi, kui prooviti laadida sama dünaamilist lehte mõlemal juhul:

Esimene juhtum (ilma piiratud radadeta)

esimene

Teine juhtum (piiratud teekondadega ja tagasipöördumine, mille väärtuseks on seatud false)

second<em>fallback</em>false

Teine juhtum (piiratud teekondadega ja tagasipöördumine, mis on seatud tõeseks)

second<em>fallback</em>true

Serveri-poolne renderdamine

Peamine erinevus SSG-ga: iga taotluse korral genereeritakse uus HTML. Seda kasutatakse peamiselt siis, kui me hangime mingeid väliseid andmeid. Sellisel juhul ei ole vaja rakendust iga kord uuesti üles ehitada, kui tahame andmeid serverist uuendada.

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

Meetod getServerSideProps näeb välja väga sarnane getStaticProps meetodiga. Erinevus seisneb selles, et getServerSideProps käivitub iga taotluse korral, samas kui getStaticProps käivitub üks kord koostamise ajal.

Kliendipoolne renderdamine

Kliendipoolse renderdamise puhul on lehe esialgne laadimine veidi aeglane. Sidepidamine serveriga toimub tööajal. Seda saab teha traditsioonilisemal viisil:

const Blog = () => {


 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();
  }, []);

Samuti saame kasutada teist lahendust, "swr" - React Hooks raamatukogu andmete kättesaamiseks Vercel*, mida NextJS loojad tungivalt soovitavad. SWR tähistab State While Revalidate.

* Andmeallikas: SWR by Vercel

import useSWR from "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>Postituste laadimine ebaõnnestus</div>;
 if (!posts.length) return <div>laadimine...</div>;
 return (
    <>
      {posts.map((post) =&gt; (
            {post.title}
        ))}
    </>
}

Kokkuvõte

NextJS annab meile lisavõimaluse valida, millist andmehankestrateegiat me soovime igal lehel kasutada. Me ei pea järgima ainult ühte lahendust kogu rakenduse jaoks.

Otsetee

  • getServerSideProps - kui teil on vaja iga taotluse puhul eelnevalt renderdada rakendust koos hangitud andmetega.
  • getStaticProps - kui andmeid saab kätte üks kord ehitamise ajal ja neid saab kasutada iga taotluse korral ilma uuendusteta
  • getInitialProps - ei ole soovitatav, kaotab kehtivuse.
  • getStaticPaths - dünaamiliste radade eeltöötluseks
NextJs plussid ja miinused
Digitaalse tootearenduse nõustamine

Loe edasi:

Rails API ja CORS. Riputus teadvusest

Miks peaksite (tõenäoliselt) kasutama Typescripti?

Kõrgeima kvaliteediga kood teie SaaS-projektis. Miks peaksite sellest (mittetehnilise) asutajana hoolima?

Seotud artiklid

Tarkvaraarendus

Tulevikukindlate veebirakenduste loomine: The Codest ekspertide meeskonna ülevaade

Avastage, kuidas The Codest paistab skaleeritavate, interaktiivsete veebirakenduste loomisel silma tipptehnoloogiatega, mis pakuvad sujuvat kasutajakogemust kõigil platvormidel. Saate teada, kuidas meie eksperditeadmised aitavad kaasa digitaalsele ümberkujundamisele ja äritegevusele...

THECODEST
Tarkvaraarendus

Top 10 Lätis asuvat tarkvaraarendusettevõtet

Tutvu Läti parimate tarkvaraarendusettevõtete ja nende innovaatiliste lahendustega meie viimases artiklis. Avastage, kuidas need tehnoloogiajuhid saavad aidata teie äri edendada.

thecodest
Enterprise & Scaleups lahendused

Java tarkvaraarenduse põhitõed: A Guide to Outsourcing Successfully

Tutvuge selle olulise juhendiga, kuidas edukalt outsourcing Java tarkvara arendada, et suurendada tõhusust, pääseda ligi eksperditeadmistele ja edendada projekti edu The Codest abil.

thecodest
Tarkvaraarendus

Ülim juhend Poola allhanke kohta

outsourcing kasv Poolas on tingitud majanduslikust, hariduslikust ja tehnoloogilisest arengust, mis soodustab IT kasvu ja ettevõtlussõbralikku kliimat.

TheCodest
Enterprise & Scaleups lahendused

Täielik juhend IT-auditi vahendite ja tehnikate kohta

IT-auditid tagavad turvalised, tõhusad ja nõuetele vastavad süsteemid. Lisateavet nende tähtsuse kohta leiate kogu artiklist.

The Codest
Jakub Jakubowicz CTO & kaasasutajad

Tellige meie teadmistebaas ja jääge kursis IT-sektori eksperditeadmistega.

    Meie kohta

    The Codest - rahvusvaheline tarkvaraarendusettevõte, mille tehnoloogiakeskused asuvad Poolas.

    Ühendkuningriik - peakorter

    • Büroo 303B, 182-184 High Street North E6 2JA
      London, Inglismaa

    Poola - kohalikud tehnoloogiakeskused

    • Fabryczna büroopark, Aleja
      Pokoju 18, 31-564 Kraków
    • Brain Embassy, Konstruktorska
      11, 02-673 Varssavi, Poola

      The Codest

    • Kodu
    • Meie kohta
    • Teenused
    • Case Studies
    • Tea kuidas
    • Karjäärivõimalused
    • Sõnastik

      Teenused

    • See nõuandev
    • Tarkvaraarendus
    • Backend arendus
    • Frontend arendus
    • Staff Augmentation
    • Backend arendajad
    • Pilveinsenerid
    • Andmeinsenerid
    • Muud
    • QA insenerid

      Ressursid

    • Faktid ja müüdid koostööst välise tarkvaraarenduspartneriga
    • USAst Euroopasse: Miks otsustavad Ameerika idufirmad Euroopasse ümber asuda?
    • Tech Offshore arenduskeskuste võrdlus: Euroopa (Poola), ASEAN (Filipiinid), Euraasia (Türgi).
    • Millised on CTO ja CIOde peamised väljakutsed?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Website terms of use

    Copyright © 2025 by The Codest. Kõik õigused kaitstud.

    etEstonian
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish arArabic it_ITItalian jaJapanese ko_KRKorean es_ESSpanish nl_NLDutch elGreek etEstonian