Oppaat

Mitä on Next.js? Selkokielinen opas sovellusrakentajille

Next.js on kehys verkkosivujen ja verkkosovellusten rakentamiseen Reactilla. React antaa käyttöliittymän rakennuspalikat, kuten painikkeet, lomakkeet ja listat. Next.js lisää ympärille loput verkkosivusta: sivut ja URL-osoitteet, sivujen renderöinnin palvelimella niin, että ne saapuvat valmiina luettavaksi, datan lataamisen ja taustakoodin ajamisen samassa projektissa. Se on avointa lähdekoodia, sen on tehnyt yritys Vercel, ja se on yksi laajimmin käytetyistä tavoista rakentaa Reactilla verkkosivustoja.

Miksi Next.js on tärkeää tekoälyllä rakennettaessa

Kun kuvaat sovelluksen tekoälyrakentajalle, se valitsee tekniset perusteet. Valinta vaikuttaa asioihin, joista välität myöhemmin:

  • Näkyvyys hakukoneissa. Julkinen sivusto, jonka pitää pärjätä Googlessa, hyötyy siitä, että se lähettää oikeaa HTML:ää, ja Next.js tekee sen hyvin.
  • Missä taustapalvelu sijaitsee. Next.js antaa frontend-sivujen ja palvelinkoodin (kuten "tallenna tämä lomake" tai "kutsu maksurajapintaa") elää yhdessä projektissa.
  • Hostaus. Palvelinominaisuuksilla varustettu Next.js-sovellus tarvitsee palvelimen, jossa se ajetaan, kun taas tavallinen Vite-sovellus voidaan tarjota staattisina tiedostoina.

Mythex aloittaa uudet projektit oletuksena Vite + React + TypeScript + Tailwind -pinolla ja käyttää Next.js:ää, kun pyydät sitä. Riittää, että mainitset "Use Next.js" ensimmäisessä kehotteessasi (miten teknologia valitaan). Siksi on hyödyllistä tietää, milloin sen pyytäminen kannattaa.

Arkinen vertaus

Jos React on laatikollinen laadukkaita Lego-palikoita, Next.js on Lego-setti, jossa ohjeet, pohjalevy ja ovien ja putkiston osat ovat jo mukana.

Voisit rakentaa saman talon irrallisista palikoista. Joutuisit vain itse päättämään, miten huoneet yhdistyvät, mihin etuovi tulee ja miten vesi johdetaan. Next.js tekee nämä päätökset puolestasi standardilla tavalla, joten jokainen Next.js-projekti on järjestetty samankaltaisesti, ja uusi kehittäjä (tai tekoäly) löytää tiensä nopeasti.

Mitä Next.js lisää Reactiin

OminaisuusMitä se tarkoittaa sinulle
Tiedostopohjainen reititysJokainen sivu on tiedosto. Tiedosto app/pricing/page.tsx muuttuu sivuksi /pricing. Ei ylimääräistä asetusta.
Palvelinpuolen renderöintiSivut voidaan rakentaa HTML:ksi palvelimella jokaiselle pyynnölle, joten ne näkyvät nopeasti ja hakukoneet voivat lukea ne.
Staattinen generointiSivut, jotka muuttuvat harvoin, voidaan rakentaa etukäteen kerran ja tarjota hyvin nopeasti.
Palvelinkomponentit (Server Components)Sivun osat voivat ajaa vain palvelimella ja lukea tietokantaa suoraan, ja ne lähettävät selaimelle valmiin HTML:n, eivät koodia.
Reittikäsittelijät ja palvelinpuoliset toiminnotTaustakoodi, kuten API-päätepiste tai lomakkeen käsittelijä, on samassa projektissa sivujen kanssa.
Sisäänrakennetut optimoinnitKuvien koon muuttaminen, fonttien lataus ja koodin jakaminen hoidetaan puolestasi.

Next.js:ssä on kaksi tapaa järjestää sivut. App Router (app/-kansio) on uudempi ja tukee palvelinkomponentteja. Pages Router (pages/-kansio) on alkuperäinen ja edelleen tuettu. Uudet projektit käyttävät yleensä App Routeria. Jos tekoälysi koodi tai opas näyttää vieraalta, tämä on usein syy.

Esimerkki: julkinen hakemisto paikallisista kahviloista

Kuvittele sivusto, joka listaa kahviloita kaupunkisi alueella, ja jokaisella kahvilalla on oma sivunsa, jonka haluat näkyvän hakutuloksissa.

Yksi kahvilasivu Next.js:ssä voisi näyttää suunnilleen tältä:

// app/cafes/[slug]/page.tsx  →  /cafes/blue-door, /cafes/hilltop ...
export default async function CafePage({ params }) {
  const { slug } = await params;
  const cafe = await db.cafe.findUnique({ where: { slug } });
  return (
    <main>
      <h1>{cafe.name}</h1>
      <p>{cafe.address}</p>
    </main>
  );
}

Kun joku (tai Google) vierailee osoitteessa /cafes/blue-door, tapahtuu seuraavaa:

  1. Next.js yhdistää URL-osoitteen tiedostoon. [slug]-kansio tarkoittaa "mikä tahansa kahvila".
  2. Komponentti ajetaan palvelimella, se lukee kahvilan tietokannasta ja rakentaa HTML:n.
  3. Selain saa valmiin sivun, jossa kahvilan nimi ja osoite ovat jo mukana, eikä tarvitse odottaa JavaScriptin hakevan dataa.

Tavallisessa selaimessa toimivassa React-sovelluksessa selain saisi ensin lähes tyhjän sivun, lataisi sitten JavaScriptin, hakisi kahvilan ja vasta sitten näyttäisi sen. Hakukoneet pärjäävät usein sellaisenkin kanssa, mutta valmis sivu on luotettavampi. Katso SEO tekoälyllä rakennetuille verkkosivuille.

Vertaa tätä henkilökunnalle tarkoitettuun kojelautaan kirjautumisen takana: hakukoneet eivät näe sitä joka tapauksessa, joten palvelinpuolen renderöinnistä on vähemmän hyötyä, ja yksinkertaisempi Vite-sovellus on usein parempi valinta.

Keskeiset termit

TermiMerkitys
Kehys (framework)Rakenne, jossa on käytäntöjä, jotka päättävät sovelluksen järjestelystä. Next.js on kehys; React on kirjasto.
SSR (palvelinpuolen renderöinti)Sivun HTML rakennetaan palvelimella jokaisella käynnillä.
SSG (staattinen sivugenerointi)Sivut rakennetaan HTML:ksi etukäteen, julkaisun yhteydessä.
CSR (selainpuolen renderöinti)Selain rakentaa sivun JavaScriptillä latauksen jälkeen. Tavallinen Vite + React -sovellus toimii näin.
SPA (yksisivuinen sovellus)Sovellus, joka latautuu kerran ja vaihtaa näkymiä selaimessa ilman kokonaisia sivulatauksia.
HydraatioSelain "herättää" palvelimen lähettämän HTML:n, jotta painikkeet ja lomakkeet toimivat.
Reitti (route)URL-polku, kuten /pricing, ja koodi, joka vastaa siihen.

Yleisiä väärinkäsityksiä

  • "Next.js korvaa Reactin." Ei korvaa. Se käyttää Reactia. Komponenttisi ovat yhä React-komponentteja.
  • "Next.js on aina parempi valinta." Se on kykenevämpi, mutta sitä on myös enemmän ymmärrettävää. Palvelinpuolen renderöinti, välimuisti ja palvelin- ja asiakaspuolen koodin ero aiheuttavat usein hämmentäviä virheitä. Sovellukseen, joka on pääosin kirjautumisen takana, tavallinen React-sovellus on usein yksinkertaisempi.
  • "Next.js vain toimii Vercelissä." Se on avointa lähdekoodia ja toimii millä tahansa Node.js-palvelimella tai Docker-kontissa. Täysin staattinen vienti on mahdollinen, jos et käytä palvelinominaisuuksia.
  • "Next.js takaa hyvän SEO:n." Se helpottaa luettavien sivujen tekemistä. Sijoitukset riippuvat yhä otsikoista, sisällöstä, nopeudesta ja linkeistä.
  • "Palvelinkoodi Next.js:ssä on automaattisesti yksityistä." Asiakaspuolelle tarkoitettu koodi päätyy selaimeen. Salaisuudet täytyy pitää palvelinpuolen koodissa ja ympäristömuuttujissa.

Mitä pyytää tekoälysovellusrakentajalta

  • "Käytä Next.js:ää App Routerilla" ensimmäisessä kehotteessasi, jos haluat sen.
  • "Mitkä sivut renderöidään palvelimella, mitkä ovat staattisia ja mitkä ajetaan selaimessa, ja miksi?"
  • "Tee julkiset markkinointi- ja listaussivut palvelinpuolella renderöidyiksi tai staattisiksi, oikeilla otsikoilla ja kuvauksilla."
  • "Pidä API-avaimet vain palvelinpuolen koodissa ja ympäristömuuttujissa. Näytä, mistä jokainen niistä luetaan."
  • "Tarvitseeko tämä sovellus Next.js:ää, vai olisiko Vite + React yksinkertaisempi siihen, mitä rakennamme?"

Next.js Mythexissä

Mythex käyttää oletuksena Vite + React + TypeScript + Tailwind -pinoa ja siirtyy Next.js:ään, kun pyydät sitä kehotteessasi. Sen mainitseminen alussa säästää krediittejä verrattuna myöhempään vaihtamiseen. Näet sovelluksen live-esikatselussa, ja Julkaise-toiminto vie sen live-osoitteeseen ilman, että sinun tarvitsee määrittää hostausta itse. Mythexin dokumentaatiossa todetaan, että asiakaspuolella renderöidyillä yksisivuisilla sovelluksilla on heikompi SEO kuin palvelinpuolella tai staattisina renderöidyillä HTML-sivuilla. Siksi markkinointisivustolla, jossa haku on tärkeää, kannattaa sanoa se heti alussa (SEO sovelluksellesi).

Kysymykset

Mikä Next.js on yksinkertaisesti sanottuna?

Next.js on React-pohjainen kehys. React rakentaa käyttöliittymän osat, ja Next.js lisää ympärille loput verkkosivusta: sivut ja URL-osoitteet, palvelinpuolen renderöinnin, datan lataamisen ja taustakoodin. Näin koko verkkosovellus voidaan rakentaa yhteen projektiin.

Mikä ero on Reactilla ja Next.js:llä?

React on kirjasto käyttöliittymäkomponenttien rakentamiseen. Next.js on kehys, joka käyttää Reactia ja lisää reititykset, palvelinpuolen renderöinnin, staattiset sivut ja palvelinpuolen koodin. Jokainen Next.js-sovellus on React-sovellus, mutta kaikki React-sovellukset eivät käytä Next.js:ää.

Onko Next.js parempi hakukoneoptimoinnille (SEO)?

Voi olla. Next.js voi lähettää hakukoneille ja kävijöille valmiin HTML:n palvelimelta tai valmiiksi rakennetuilta staattisilta sivuilta, kun taas pelkästään selaimessa toimiva React-sovellus lähettää lähes tyhjän sivun, jonka JavaScript täyttää. Hyvät otsikot, kuvaukset ja sisältö ovat kuitenkin tärkeämpiä kuin kehys.

Tarvitsenko Verceliä Next.js:n käyttöön?

Et. Next.js on avointa lähdekoodia, ja Vercel on sen tekijä, mutta sitä voi ajaa millä tahansa Node.js:ää ajavalla palvelimella, Docker-kontissa tai staattisena vientinä sivuille, jotka eivät tarvitse palvelinominaisuuksia. Osa ominaisuuksista on helpompi ottaa käyttöön Verceliä käyttäen.

Pitäisikö käyttää Next.js:ää vai Vitea sovelluksessani?

Kirjautumisen takana olevassa sovelluksessa, kuten kojelaudassa tai sisäisessä työkalussa, Vite + React on yksinkertaisempi ja toimii hyvin. Next.js kannattaa, kun tarvitset sisältöä, jonka hakukoneet lukevat helposti, monia julkisia sivuja tai palvelinpuolen renderöityjä sivuja samassa projektissa taustakoodisi kanssa.

Mythex · Pricing · Rakenna mitä tahansa tekoälyllä · Verkkosivu- ja sovellusmallipohjat · Mythex vertailussa · Tekoälysovellusten rakentamisen sanasto · Ilmaiset työkalut tekoälysovellusten rakentamiseen · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)