Slovenščina

Raziščite React Server Actions, zmogljivo funkcijo za obdelavo oddanih obrazcev in mutacije podatkov neposredno na strežniku, ki poenostavlja razvoj in povečuje varnost.

React Server Actions: Poenostavljena strežniška obdelava obrazcev

React Server Actions, predstavljene v React 18 in bistveno izboljšane v Next.js, ponujajo revolucionaren pristop k obdelavi oddanih obrazcev in mutacij podatkov neposredno na strežniku. Ta zmogljiva funkcija poenostavlja razvojni proces, povečuje varnost in izboljšuje zmogljivost v primerjavi s tradicionalnim pridobivanjem in manipulacijo podatkov na strani odjemalca.

Kaj so React Server Actions?

Server Actions so asinhrone funkcije, ki se izvajajo na strežniku in jih je mogoče klicati neposredno iz React komponent. Omogočajo vam izvajanje strežniških nalog, kot so:

Ključna prednost Server Actions je, da omogočajo pisanje strežniške kode znotraj vaših React komponent, s čimer odpade potreba po ločenih API poteh in zapleteni logiki za pridobivanje podatkov na strani odjemalca. Ta kolokacija uporabniškega vmesnika in strežniške logike vodi do bolj vzdržljive in učinkovite kode.

Prednosti uporabe React Server Actions

Uporaba React Server Actions prinaša več pomembnih prednosti:

Poenostavljen razvoj

Server Actions zmanjšajo količino ponavljajoče se kode, saj omogočajo obdelavo oddanih obrazcev in mutacij podatkov neposredno znotraj vaših React komponent. To odpravlja potrebo po ločenih API končnih točkah in zapleteni logiki za pridobivanje podatkov na strani odjemalca, kar poenostavi razvojni proces ter naredi vašo kodo lažjo za razumevanje in vzdrževanje. Vzemimo za primer preprost kontaktni obrazec. Brez Server Actions bi potrebovali ločeno API pot za obdelavo oddaje obrazca, odjemalski JavaScript za pošiljanje podatkov in logiko za obravnavo napak tako na odjemalcu kot na strežniku. S Server Actions je vse to mogoče obravnavati znotraj same komponente.

Povečana varnost

Z izvajanjem kode na strežniku Server Actions zmanjšajo napadalno površino vaše aplikacije. Občutljivi podatki in poslovna logika so ločeni od odjemalca, kar preprečuje zlonamernim uporabnikom, da bi z njimi manipulirali. Na primer, poverilnice za dostop do podatkovne baze ali API ključi niso nikoli izpostavljeni v odjemalski kodi. Vse interakcije s podatkovno bazo se dogajajo na strežniku, kar zmanjšuje tveganje za SQL injekcijo ali nepooblaščen dostop do podatkov.

Izboljšana zmogljivost

Server Actions lahko izboljšajo zmogljivost z zmanjšanjem količine JavaScripta, ki ga je treba prenesti in izvesti na odjemalcu. To je še posebej koristno za uporabnike na manj zmogljivih napravah ali s počasno internetno povezavo. Obdelava podatkov se zgodi na strežniku, odjemalcu pa se pošljejo le potrebne posodobitve uporabniškega vmesnika, kar vodi do hitrejšega nalaganja strani in bolj tekoče uporabniške izkušnje.

Optimistične posodobitve

Server Actions se brezhibno integrirajo z Reactovimi Suspense in Transitions, kar omogoča optimistične posodobitve. Optimistične posodobitve vam omogočajo, da takoj posodobite uporabniški vmesnik, še preden strežnik potrdi dejanje. To zagotavlja bolj odzivno in privlačno uporabniško izkušnjo, saj uporabnikom ni treba čakati na odgovor strežnika, da bi videli rezultate svojih dejanj. V e-trgovini je mogoče dodajanje izdelka v nakupovalno košarico prikazati takoj, medtem ko strežnik v ozadju potrjuje dodajanje.

Progresivna izboljšava

Server Actions podpirajo progresivno izboljšavo, kar pomeni, da vaša aplikacija lahko deluje tudi, če je JavaScript onemogočen ali se ne naloži. Ko je JavaScript onemogočen, se obrazci oddajo kot tradicionalni HTML obrazci, strežnik pa bo obdelal oddajo in uporabnika preusmeril na novo stran. To zagotavlja, da vaša aplikacija ostane dostopna vsem uporabnikom, ne glede na njihovo konfiguracijo brskalnika ali omrežne pogoje. To je še posebej pomembno za dostopnost in SEO.

Kako uporabljati React Server Actions

Za uporabo React Server Actions boste morali uporabljati ogrodje, ki jih podpira, kot je Next.js. Sledi vodnik po korakih:

1. Definirajte Server Action

Ustvarite asinhrono funkcijo, ki se bo izvajala na strežniku. Ta funkcija naj obravnava logiko, ki jo želite izvesti na strežniku, kot je posodabljanje podatkovne baze ali klicanje API-ja. Funkcijo na vrhu označite z direktivo `"use server"`, da označite, da gre za Server Action. Ta direktiva pove prevajalniku React, da naj funkcijo obravnava kot strežniško funkcijo in samodejno poskrbi za serializacijo in deserializacijo podatkov med odjemalcem in strežnikom.

// app/actions.js
'use server'

import { revalidatePath } from 'next/cache';
import { saveMessage } from './db';

export async function createMessage(prevState, formData) {
  const message = formData.get('message');

  try {
    await saveMessage(message);
    revalidatePath('/'); // Počisti predpomnilnik poti
    return { message: 'Sporočilo uspešno shranjeno!' };
  } catch (e) {
    return { message: 'Shranjevanje sporočila ni uspelo' };
  }
}

Pojasnilo:

2. Uvozite in uporabite Server Action v svoji komponenti

Uvozite Server Action v svojo React komponento in jo uporabite kot `action` prop na elementu obrazca. Kljukico `useFormState` lahko uporabite za upravljanje stanja obrazca in prikazovanje povratnih informacij uporabniku.

// app/page.jsx
'use client';

import { useFormState } from 'react-dom';
import { createMessage } from './actions';

export default function Home() {
  const [state, formAction] = useFormState(createMessage, {message: ''});

  return (
    
{state?.message &&

{state.message}

}
); }

Pojasnilo:

3. Obdelava podatkov obrazca

Znotraj Server Action lahko dostopate do podatkov obrazca z uporabo `FormData` API-ja. Ta API omogoča priročen način dostopa do vrednosti polj obrazca.

'use server'

export async function createMessage(prevState, formData) {
  const message = formData.get('message');

  // ...
}

4. Obravnavanje napak

Uporabite bloke `try...catch` za obravnavanje napak, ki se lahko pojavijo med izvajanjem Server Action. V objektu stanja vrnite sporočilo o napaki, da ga prikažete uporabniku.

'use server'

export async function createMessage(prevState, formData) {
  const message = formData.get('message');

  try {
    // ...
  } catch (e) {
    return { message: 'Shranjevanje sporočila ni uspelo' };
  }
}

5. Ponovno preverjanje podatkov

Ko Server Action uspešno spremeni podatke, boste morda morali ponovno preveriti predpomnilnik podatkov, da zagotovite, da uporabniški vmesnik odraža najnovejše spremembe. Uporabite funkciji `revalidatePath` ali `revalidateTag` iz `next/cache` za ponovno preverjanje določenih poti ali oznak.

'use server'

import { revalidatePath } from 'next/cache';

export async function createMessage(prevState, formData) {
  // ...
  revalidatePath('/'); // Počisti predpomnilnik poti
  // ...
}

Napredna uporaba

Mutiranje podatkov

Server Actions so še posebej primerne za mutiranje podatkov, kot je posodabljanje podatkovnih baz ali zunanjih API-jev. Uporabite jih lahko za obravnavo kompleksnih mutacij podatkov, ki zahtevajo strežniško logiko, kot so preverjanje podatkov, izvajanje izračunov ali interakcija z več viri podatkov. Predstavljajte si scenarij, kjer morate posodobiti profil uporabnika in poslati potrditveno e-pošto. Server Action lahko obravnava tako posodobitev baze podatkov kot postopek pošiljanja e-pošte v eni sami, atomski operaciji.

Avtentikacija in avtorizacija

Server Actions se lahko uporabljajo za avtentikacijo in avtorizacijo. Z izvajanjem preverjanj avtentikacije in avtorizacije na strežniku lahko zagotovite, da imajo samo pooblaščeni uporabniki dostop do občutljivih podatkov in funkcionalnosti. Server Actions lahko uporabite za obravnavo prijav, registracij in ponastavitev gesel uporabnikov. Na primer, Server Action lahko preveri poverilnice uporabnika v podatkovni bazi in vrne žeton, ki se lahko uporabi za avtentikacijo nadaljnjih zahtev.

Robne funkcije (Edge Functions)

Server Actions je mogoče namestiti kot robne funkcije, ki se izvajajo na globalnem omrežju strežnikov blizu vaših uporabnikov. To lahko znatno zmanjša zakasnitev in izboljša zmogljivost, zlasti za uporabnike na geografsko razpršenih lokacijah. Robne funkcije so idealne za obravnavo Server Actions, ki zahtevajo nizko zakasnitev, kot so posodobitve podatkov v realnem času ali dostava prilagojene vsebine. Next.js ponuja vgrajeno podporo za namestitev Server Actions kot robnih funkcij.

Pretakanje (Streaming)

Server Actions podpirajo pretakanje, kar omogoča pošiljanje podatkov odjemalcu v delih, ko postanejo na voljo. To lahko izboljša zaznano zmogljivost vaše aplikacije, zlasti pri Server Actions, ki se izvajajo dolgo časa. Pretakanje je še posebej uporabno za obravnavo velikih naborov podatkov ali kompleksnih izračunov. Na primer, lahko rezultate iskanja pretakate odjemalcu, ko se pridobivajo iz podatkovne baze, kar zagotavlja bolj odzivno uporabniško izkušnjo.

Najboljše prakse

Sledi nekaj najboljših praks, ki jih je treba upoštevati pri uporabi React Server Actions:

Primeri iz resničnega sveta

Poglejmo si nekaj primerov iz resničnega sveta, kako se lahko React Server Actions uporabljajo v različnih vrstah aplikacij:

Aplikacija za e-trgovino

Aplikacija za družbena omrežja

Sistem za upravljanje vsebin (CMS)

Upoštevanje internacionalizacije

Pri razvoju aplikacij za globalno občinstvo je bistveno upoštevati internacionalizacijo (i18n) in lokalizacijo (l10n). Sledi nekaj premislekov za uporabo React Server Actions v internacionaliziranih aplikacijah:

Na primer, pri obdelavi obrazca, ki zahteva vnos datuma, lahko Server Action uporabi `Intl.DateTimeFormat` API za razčlenitev datuma v skladu z jezikovnimi nastavitvami uporabnika, kar zagotavlja pravilno interpretacijo datuma ne glede na regionalne nastavitve uporabnika.

Zaključek

React Server Actions so močno orodje za poenostavitev strežniške obdelave obrazcev in mutacij podatkov v React aplikacijah. Z omogočanjem pisanja strežniške kode neposredno znotraj vaših React komponent, Server Actions zmanjšajo ponavljajočo se kodo, povečajo varnost, izboljšajo zmogljivost in omogočajo optimistične posodobitve. Z upoštevanjem najboljših praks, opisanih v tem vodniku, lahko izkoristite Server Actions za gradnjo bolj robustnih, skalabilnih in vzdržljivih React aplikacij. Ker se React še naprej razvija, bodo Server Actions nedvomno igrale vse pomembnejšo vlogo v prihodnosti spletnega razvoja.

React Server Actions: Poenostavljena strežniška obdelava obrazcev | MLOG