Latviešu

Izpētiet React Server Actions — jaudīgu funkciju veidlapu iesniegšanas un datu mutāciju apstrādei tieši serverī, kas vienkāršo React izstrādi un uzlabo drošību.

React Server Actions: Vienkāršota veidlapu apstrāde servera pusē

React Server Actions, kas ieviestas React 18 un ievērojami uzlabotas Next.js, piedāvā revolucionāru pieeju veidlapu iesniegšanas un datu mutāciju apstrādei tieši serverī. Šī jaudīgā funkcija vienkāršo izstrādes procesu, uzlabo drošību un veiktspēju salīdzinājumā ar tradicionālo klienta puses datu ielādi un manipulāciju.

Kas ir React Server Actions?

Server Actions ir asinhronas funkcijas, kas darbojas serverī un var tikt izsauktas tieši no React komponentiem. Tās ļauj veikt servera puses uzdevumus, piemēram:

Galvenā Server Actions priekšrocība ir tā, ka tās ļauj rakstīt servera puses kodu jūsu React komponentos, novēršot nepieciešamību pēc atsevišķiem API maršrutiem un sarežģītas klienta puses datu ielādes loģikas. Šī lietotāja saskarnes un servera puses loģikas apvienošana vienuviet noved pie vieglāk uzturama un efektīvāka koda.

React Server Actions izmantošanas priekšrocības

React Server Actions izmantošana sniedz vairākas būtiskas priekšrocības:

Vienkāršota izstrāde

Server Actions samazina šablona koda daudzumu, ļaujot apstrādāt veidlapu iesniegšanu un datu mutācijas tieši jūsu React komponentos. Tas novērš nepieciešamību pēc atsevišķiem API galapunktiem un sarežģītas klienta puses datu ielādes loģikas, racionalizējot izstrādes procesu un padarot jūsu kodu vieglāk saprotamu un uzturamu. Apsveriet vienkāršu kontaktu veidlapu. Bez Server Actions jums būtu nepieciešams atsevišķs API maršruts, lai apstrādātu veidlapas iesniegšanu, klienta puses JavaScript, lai nosūtītu datus, un kļūdu apstrādes loģika gan klientā, gan serverī. Ar Server Actions to visu var apstrādāt pašā komponentā.

Uzlabota drošība

Izpildot kodu serverī, Server Actions samazina jūsu lietojumprogrammas uzbrukuma virsmu. Sensitīvi dati un biznesa loģika tiek turēti prom no klienta, neļaujot ļaundabīgiem lietotājiem tos mainīt. Piemēram, datubāzes akreditācijas dati vai API atslēgas nekad netiek atklātas klienta puses kodā. Visas datubāzes mijiedarbības notiek serverī, mazinot SQL injekciju vai nesankcionētas datu piekļuves risku.

Uzlabota veiktspēja

Server Actions var uzlabot veiktspēju, samazinot JavaScript daudzumu, kas jālejupielādē un jāizpilda klientā. Tas ir īpaši izdevīgi lietotājiem ar mazjaudīgām ierīcēm vai lēnu interneta savienojumu. Datu apstrāde notiek serverī, un klientam tiek nosūtīti tikai nepieciešamie lietotāja saskarnes atjauninājumi, tādējādi nodrošinot ātrāku lapu ielādi un plūstošāku lietotāja pieredzi.

Optimistiskie atjauninājumi

Server Actions nevainojami integrējas ar React Suspense un Transitions, nodrošinot optimistiskus atjauninājumus. Optimistiskie atjauninājumi ļauj nekavējoties atjaunināt lietotāja saskarni, pat pirms serveris ir apstiprinājis darbību. Tas nodrošina atsaucīgāku un saistošāku lietotāja pieredzi, jo lietotājiem nav jāgaida servera atbilde, pirms viņi redz savu darbību rezultātus. E-komercijā preces pievienošanu iepirkumu grozam var parādīt nekavējoties, kamēr serveris fonā apstiprina pievienošanu.

Progresīvā uzlabošana

Server Actions atbalsta progresīvo uzlabošanu, kas nozīmē, ka jūsu lietojumprogramma joprojām var darboties, pat ja JavaScript ir atspējots vai neizdodas ielādēt. Kad JavaScript ir atspējots, veidlapas tiks iesniegtas kā tradicionālas HTML veidlapas, un serveris apstrādās iesniegšanu un novirzīs lietotāju uz jaunu lapu. Tas nodrošina, ka jūsu lietojumprogramma paliek pieejama visiem lietotājiem neatkarīgi no viņu pārlūkprogrammas konfigurācijas vai tīkla apstākļiem. Tas ir īpaši svarīgi pieejamībai un SEO.

Kā izmantot React Server Actions

Lai izmantotu React Server Actions, jums būs nepieciešams ietvars, kas tos atbalsta, piemēram, Next.js. Šeit ir soli pa solim ceļvedis:

1. Definējiet Server Action

Izveidojiet asinhronu funkciju, kas darbosies serverī. Šai funkcijai ir jāapstrādā loģika, kuru vēlaties izpildīt serverī, piemēram, datubāzes atjaunināšana vai API izsaukšana. Atzīmējiet funkciju ar direktīvu \"use server\" augšpusē, lai norādītu, ka tā ir Server Action. Šī direktīva norāda React kompilatoram, ka funkcija jāuzskata par servera puses funkciju un automātiski jāapstrādā datu serializācija un deserializācija starp klientu un serveri.

// 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('/'); // Notīrīt maršruta kešatmiņu
    return { message: 'Ziņojums veiksmīgi saglabāts!' };
  } catch (e) {
    return { message: 'Neizdevās saglabāt ziņojumu' };
  }
}

Paskaidrojums:

2. Importējiet un izmantojiet Server Action savā komponentā

Importējiet Server Action savā React komponentā un izmantojiet to kā `action` rekvizītu (prop) veidlapas elementā. `useFormState` āķi (hook) var izmantot, lai pārvaldītu veidlapas stāvokli un parādītu atgriezenisko saiti lietotājam.

// 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}

}
); }

Paskaidrojums:

3. Apstrādājiet veidlapas datus

Server Action iekšpusē jūs varat piekļūt veidlapas datiem, izmantojot `FormData` API. Šis API nodrošina ērtu veidu, kā piekļūt veidlapas lauku vērtībām.

'use server'

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

  // ...
}

4. Apstrādājiet kļūdas

Izmantojiet `try...catch` blokus, lai apstrādātu kļūdas, kas var rasties Server Action izpildes laikā. Atgrieziet kļūdas ziņojumu stāvokļa objektā, lai to parādītu lietotājam.

'use server'

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

  try {
    // ...
  } catch (e) {
    return { message: 'Neizdevās saglabāt ziņojumu' };
  }
}

5. Atkārtoti validējiet datus

Pēc tam, kad Server Action ir veiksmīgi mainījusi datus, jums var būt nepieciešams atkārtoti validēt datu kešatmiņu, lai nodrošinātu, ka lietotāja saskarne atspoguļo jaunākās izmaiņas. Izmantojiet `revalidatePath` vai `revalidateTag` funkcijas no `next/cache`, lai atkārtoti validētu konkrētus ceļus vai tagus.

'use server'

import { revalidatePath } from 'next/cache';

export async function createMessage(prevState, formData) {
  // ...
  revalidatePath('/'); // Notīrīt maršruta kešatmiņu
  // ...
}

Padziļināta lietošana

Datu mainīšana

Server Actions ir īpaši piemērotas datu mainīšanai, piemēram, datubāzu vai ārējo API atjaunināšanai. Jūs varat izmantot Server Actions, lai apstrādātu sarežģītas datu mutācijas, kas prasa servera puses loģiku, piemēram, datu validāciju, aprēķinu veikšanu vai mijiedarbību ar vairākiem datu avotiem. Apsveriet scenāriju, kurā jums ir jāatjaunina lietotāja profils un jānosūta apstiprinājuma e-pasts. Server Action var apstrādāt gan datubāzes atjaunināšanu, gan e-pasta sūtīšanas procesu vienā, atomārā operācijā.

Autentifikācija un autorizācija

Server Actions var izmantot, lai apstrādātu autentifikāciju un autorizāciju. Veicot autentifikācijas un autorizācijas pārbaudes serverī, jūs varat nodrošināt, ka tikai autorizētiem lietotājiem ir piekļuve sensitīviem datiem un funkcionalitātei. Jūs varat izmantot Server Actions, lai apstrādātu lietotāju pieteikšanos, reģistrāciju un paroles atiestatīšanu. Piemēram, Server Action var pārbaudīt lietotāja akreditācijas datus pret datubāzi un atgriezt žetonu (token), ko var izmantot, lai autentificētu turpmākos pieprasījumus.

Edge funkcijas

Server Actions var izvietot kā Edge funkcijas, kas darbojas globālā serveru tīklā tuvu jūsu lietotājiem. Tas var ievērojami samazināt latentumu un uzlabot veiktspēju, īpaši lietotājiem, kas atrodas ģeogrāfiski izkliedētās vietās. Edge funkcijas ir ideāli piemērotas Server Actions apstrādei, kam nepieciešams zems latentums, piemēram, reāllaika datu atjauninājumiem vai personalizēta satura piegādei. Next.js nodrošina iebūvētu atbalstu Server Actions izvietošanai kā Edge funkcijas.

Straumēšana (Streaming)

Server Actions atbalsta straumēšanu (streaming), kas ļauj nosūtīt datus klientam pa daļām, tiklīdz tie kļūst pieejami. Tas var uzlabot jūsu lietojumprogrammas uztverto veiktspēju, īpaši Server Actions gadījumā, kuru izpilde prasa ilgu laiku. Straumēšana ir īpaši noderīga, strādājot ar lielām datu kopām vai sarežģītiem aprēķiniem. Piemēram, jūs varat straumēt meklēšanas rezultātus klientam, tiklīdz tie tiek iegūti no datubāzes, nodrošinot atsaucīgāku lietotāja pieredzi.

Labākās prakses

Šeit ir dažas labākās prakses, kas jāievēro, izmantojot React Server Actions:

Reālās dzīves piemēri

Apskatīsim dažus reālās dzīves piemērus, kā React Server Actions var izmantot dažāda veida lietojumprogrammās:

E-komercijas lietojumprogramma

Sociālo mediju lietojumprogramma

Satura pārvaldības sistēma (CMS)

Internacionalizācijas apsvērumi

Izstrādājot lietojumprogrammas globālai auditorijai, ir svarīgi ņemt vērā internacionalizāciju (i18n) un lokalizāciju (l10n). Šeit ir daži apsvērumi, izmantojot React Server Actions internacionalizētās lietojumprogrammās:

Piemēram, apstrādājot veidlapu, kurā nepieciešams ievadīt datumu, Server Action var izmantot `Intl.DateTimeFormat` API, lai parsētu datumu atbilstoši lietotāja lokalizācijai, nodrošinot, ka datums tiek pareizi interpretēts neatkarīgi no lietotāja reģionālajiem iestatījumiem.

Noslēgums

React Server Actions ir jaudīgs rīks servera puses veidlapu apstrādes un datu mutāciju vienkāršošanai React lietojumprogrammās. Ļaujot rakstīt servera puses kodu tieši jūsu React komponentos, Server Actions samazina šablona kodu, uzlabo drošību, veiktspēju un nodrošina optimistiskus atjauninājumus. Ievērojot šajā ceļvedī izklāstītās labākās prakses, jūs varat izmantot Server Actions, lai veidotu stabilākas, mērogojamākas un vieglāk uzturamas React lietojumprogrammas. Tā kā React turpina attīstīties, Server Actions neapšaubāmi spēlēs arvien nozīmīgāku lomu tīmekļa izstrādes nākotnē.