Asennusoppaat

Next.js:n asennus ja julkaisu

Käymme vaihe vaiheelta läpi, miten Next.js-projekti luodaan create-next-app-työkalulla, miten App Router -kansiorakenne toimii ja miten projekti julkaistaan Vercelissä tai omalla palvelimella.

Aurora YazılımToimitustiimi 6 min lukuaika
Next.js:n asennus ja julkaisu
Miten Next.js asennetaan?

Next.js:n asennusta varten asennat Node.js:n ajantasaisen LTS-version ja ajat päätteessä komennon npx create-next-app@latest. Ohjattu toiminto kysyy TypeScript-, ESLint-, Tailwind CSS- ja App Router -valinnoista. Siirryt projektikansioon ja käynnistät kehityspalvelimen komennolla npm run dev; sivusto aukeaa osoitteessa localhost:3000, ja julkaisua varten käytetään komentoa npm run build.

Mikä on Next.js ja kenen kannattaa käyttää sitä?

Next.js on Reactin päälle rakennettu verkkosovelluskehys. Siinä missä React piirtää vain käyttöliittymäkomponentit, Next.js tuo valmiina reitityksen, palvelinpuolen sivutuotannon, staattisen sivutulosteen, kuvien optimoinnin ja API-päätepisteet.

Sen suurin ero on, että se voi tuottaa sivut palvelimella HTML:nä. Hakukoneet ja sosiaalisen median esikatselut näkevät sisällön suoraan, ja ensimmäinen avautuminen nopeutuu. Siksi se sopii yksisivuisia sovelluksia paremmin sisältövetoisille yrityssivustoille, luetteloille ja blogisivuille.

Jos kehität vain kirjautumista vaativaa hallintapaneelia, yksinkertaisempi rakenne voi riittää; tätä tilannetta varten katso oppaamme React-asennus Vitellä.

Edellytykset

Next.js on tarkka tuetuista Node.js-versioista ja luopuu uusissa pääversioissa vanhojen Node-versioiden tuesta. Siksi ongelmattomin tapa on asentaa osoitteesta nodejs.org ajantasainen LTS-versio.

  • Node.js:n ajantasainen LTS-versio ja npm (tulee Noden mukana); myös pnpm, yarn tai bun käyvät.
  • Koodieditori; suositelluilla laajennuksilla asennusta varten katso artikkeli VS Coden asennus.
  • Git ja etävarasto (GitHub, GitLab): julkaisuprosessit ammentavat yleensä varastosta.
  • Jos asennat omalle palvelimellesi, Linux-palvelin, johon on SSH-yhteys.

Asenna ja varmista Node.js

Node.js:n asennus eroaa hieman käyttöjärjestelmän mukaan; Next.js-komennot ovat asennuksen jälkeen kaikkialla samat.

Windows

Lataa LTS-asennustiedosto osoitteesta nodejs.org tai käytä wingetiä; avaa sen jälkeen pääte uudelleen.

powershell
winget install OpenJS.NodeJS.LTS
node -v

macOS

Voit asentaa virallisella paketilla tai Homebrewlla.

bash
brew install node
node -v

Linux

Jakelun varastojen versio voi olla vanhentunut; asentaminen nvm:llä on turvallisempaa.

bash
nvm install --lts
nvm use --lts
node -v

Projektin luominen create-next-app-työkalulla

Create next app -ohjattu toiminto on virallinen aloitustyökalu, ja se asentaa kaikki tarvittavat paketit kerralla. Kun ajat komennon, sinulta kysytään projektin nimi ja muutama valinta; jos olet epävarma, suositeltujen oletusten hyväksyminen on hyvä alku.

KysymysSuositus
TypeScriptKyllä; havaitsee virheet jo kirjoitettaessa
ESLintKyllä; koodin laadun vuoksi
Tailwind CSSRiippuu mausta; valitse suunnittelujärjestelmäsi mukaan
src/-kansioRiippuu mausta; erottaa asetustiedostot koodista
App RouterKyllä; uusille projekteille suositeltu rakenne
Import aliasOletus @/* riittää
bashAsennus ja kehityspalvelin
npx create-next-app@latest benim-sitem
cd benim-sitem
npm run dev

App Router -rakenteen ymmärtäminen

Next.js App Router tuottaa reitityksen kansiorakenteesta. Jokainen app-kansion alla oleva kansio on osoitteen osa; kansion page.tsx-tiedosto määrittelee sivun ja layout.tsx kyseisen osion yhteisen rungon.

App Routerissa komponentit ovat oletuksena palvelinkomponentteja: ne toimivat palvelimella, voivat hakea dataa suoraan eivätkä lähetä selaimelle JavaScriptiä. Komponenteista, jotka tarvitsevat vuorovaikutusta, kuten napsautuksia tai lomakkeen tilaa, teet asiakaskomponentteja kirjoittamalla niiden ylimmäksi use client -direktiivin.

TiedostoOsoite / tehtävä
app/layout.tsxKoko sivuston juurirunko: html, body, yhteinen otsikko ja alatunniste
app/page.tsxEtusivu (/)
app/hakkimizda/page.tsxOsoite /hakkimizda
app/blog/[slug]/page.tsxDynaaminen osoite: /blog/mikä-tahansa-kirjoitus
app/not-found.tsx404-sivu
app/api/iletisim/route.tsAPI-päätepiste (POST- ja GET-käsittelijät)

Metadata hakukoneoptimointia varten

Jokainen sivu tai layout-tiedosto voi määritellä otsikon, kuvauksen ja Open Graph -tunnisteet viemällä metadata-olion. Dynaamisilla sivuilla käytetään generateMetadata-funktiota. Tämä rakenne helpottaa hakukoneystävällisten verkkosivujen vaatimien tunnisteiden hallintaa sivutasolla.

Build ja ympäristömuuttujat

Ennen julkaisua tee tuotantokäännös komennolla npm run build. Build-tuloste listaa, tuotetaanko kukin sivu staattisena vai dynaamisena; jos odottamaton sivu tulee dynaamiseksi, se on varhainen merkki turhasta palvelinkuormasta.

Ympäristömuuttujat säilytetään .env.local-tiedostossa. Vain NEXT_PUBLIC_-etuliitteiset muuttujat lähetetään selaimelle; tietokannan salasanan ja API:n salaiset avaimet tulee jättää ilman etuliitettä ja käyttää vain palvelinkoodissa.

bash
npm run build
npm run start

Miten kukin sivu kannattaa tuottaa?

Next.js:n voima tulee siitä, että voit valita jokaiselle sivulle eri renderöintistrategian. Väärä valinta tarkoittaa joko turhia palvelinkustannuksia tai vanhentunutta sisältöä; siksi luokittele sivusi tyypin mukaan heti perustamisen jälkeen.

Harvoin muuttuvat sivut, kuten meistä-, palvelu- ja yhteystietosivut, sopivat ihanteellisesti staattiseen tuotantoon: ne tuotetaan kerran käännösvaiheessa ja tarjoillaan CDN:stä alle sekunnissa. Lähes kaikki yrityksen kotisivun sivut kuuluvat tähän ryhmään.

Satunnaisesti päivittyvillä sivuilla, kuten blogeissa ja tuoteluetteloissa, uudelleentuotanto (revalidate) tietyin väliajoin on hyvä kompromissi. Käyttäjäkohtaiset paneelit, ostoskorit ja reaaliaikaista saatavuutta näyttävät varausnäkymät tulee sen sijaan tuottaa palvelimella jokaisella pyynnöllä. Tämä viimeinen ryhmä on yleinen skenaario hotellien ja toimistojen kaltaisissa alakohtaisissa ohjelmistoissa, ja se vaatii tietokannan, välimuistin ja valtuutuksen suunnittelua yhdessä.

Next.js-julkaisuvaihtoehdot

Next.js-julkaisuun on kolme yleistä tapaa. Valinta riippuu liikenteestä, budjetista, datan sijainnista ja tiimisi kokemuksesta palvelimien hallinnasta.

  • Vercel: Next.js:n kehittäneen yrityksen alusta. Yhdistät varaston, ja jokaisella lähetyksellä syntyy automaattinen käännös ja esikatseluosoite.
  • Oma Node.js-palvelin: komennolla npm run start toimivaa sovellusta pitää käynnissä prosessinhallinta, kuten PM2, ja sen eteen asetetaan Nginx. Antaa täyden hallinnan, mutta ylläpitovastuu on sinulla.
  • Staattinen vienti: next.config-tiedoston output: 'export' -asetuksella sivusto muuttuu pelkiksi HTML-tiedostoiksi. Palvelinkomponentteja vaativat dynaamiset ominaisuudet eivät toimi tässä tilassa.

Julkaisu PM2:lla ja Nginxillä

Kun olet asentanut Node.js:n Ubuntu-pohjaiselle palvelimelle, hae projekti varastosta, käännä se ja käynnistä PM2:lla. PM2:n startup-komento pyytää ajamaan sudolla näytölle tulostamansa rivin; tämä rivi saa sovelluksen käynnistymään automaattisesti palvelimen käynnistyessä uudelleen.

bash
git clone https://github.com/kullanici/benim-sitem.git
cd benim-sitem
npm ci
npm run build
sudo npm install -g pm2
pm2 start npm --name benim-sitem -- start
pm2 save
pm2 startup
nginxNginxin käänteisen välityspalvelimen asetus
server {
    listen 80;
    server_name ornek.com www.ornek.com;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Yleiset virheet ja ratkaisut

Suurin osa Next.js-projekteissa kohdatuista virheistä johtuu versioiden yhteensopimattomuudesta tai palvelin- ja asiakaskoodin sekoittamisesta. Pakettienhallinnan ongelmissa auttaa myös npm-komennot-opas.

OireRatkaisu
Varoitus: Node-versiota ei tuetaSiirry ajantasaiseen LTS-versioon; jos käytät nvm:ää, nvm use --lts
Portti 3000 on käytössäValitse toinen portti komennolla npm run dev -- -p 3001
Hydration failed -virheSiirrä koodi, joka tuottaa erilaisen tulosteen palvelimella ja selaimessa (päivämäärä, satunnaisluku, window-käyttö), asiakaskomponenttiin tai useEffectin sisään
useState-hookia ei voi käyttää palvelinkomponentissaLisää tiedoston alkuun use client -direktiivi
Ympäristömuuttuja on tyhjä tuotannossaMääritä muuttuja myös palvelimella; jos tarvitset sitä selaimessa, käytä NEXT_PUBLIC_-etuliitettä ja käännä uudelleen

Usein kysytyt kysymykset

01Kannattaako käyttää Pages Routeria vai App Routeria?

Uusille projekteille virallinen suositus on App Router; palvelinkomponentit, sisäkkäiset layoutit ja suoratoistorenderöinti ovat vain tässä rakenteessa. Pages Routeria tuetaan edelleen, joten vanhaa projektia ei tarvitse siirtää kiireellä.

02Onko Vercel pakollinen Next.js:lle?

Ei. Next.js on avointa lähdekoodia ja toimii millä tahansa palvelimella tai Docker-kontissa, jossa Node.js voi pyöriä. Vercel helpottaa asennusta; oma palvelin voi puolestaan olla edullisempi, antaa paremman datan sijainnin hallinnan ja enemmän kontrollia.

03Toimiiko Next.js-projekti jaetussa verkkopalvelussa?

Palvelinominaisuuksia vaativa projekti ei toimi perinteisessä jaetussa webhotellissa, jossa Node.js-prosessia ei voi ajaa. Jos sivustosi on täysin staattinen, voit ladata output: export -asetuksella tuotetut tiedostot; muuten tarvitaan VPS tai Node-tukea tarjoava ympäristö.

Next.js:n asennus päättyy muutamaan komentoon; oikea renderöintistrategia ja vankka julkaisuympäristö tekevät projektista pitkäikäisen. Jos suunnittelet työhösi sopivaa sovellusta, kuten varaus-, ilmoitus- tai hallintapaneelia, tutustu ohjelmistoratkaisuihimme; ja sisältökeskeistä nopeaa sivustoa varten tutustu verkkosivujen suunnittelun tiimiimme.