Yandex.Metrika Counter

Начать работать с нами легко! Просто заполните заявку, и мы свяжемся с вами для обсуждения деталей.

Бюджет

НаТимая Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ, Π²Ρ‹ Π΄Π°Ρ‘Ρ‚Π΅ согласиС Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΏΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΡΠΎΠ³Π»Π°ΡˆΠ°Π΅Ρ‚Π΅ΡΡŒ с ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π΄Π°Π½Π½Ρ‹Ρ….

РазбираСмся Π² ΡΠ΅Ρ€Π²Π΅Ρ€Π½Ρ‹Ρ… ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ских ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°Ρ… Π² Next.js: ΠΊΠΎΠ³Π΄Π°, ΠΊΠ°ΠΊ ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ?

Β·

Next.js ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΡˆΠΈΡ€ΠΎΠΊΠΈΠ΅ возмоТности для ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π’Π°ΠΆΠ½ΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ Π΅Π³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ с ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ Next App Router ΡΠ²Π»ΡΡŽΡ‚ΡΡ сСрвСрныС ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚скиС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³ΠΎΠΌ Π½Π° ΡΡ‚ΠΎΡ€ΠΎΠ½Π΅ сСрвСра ΠΈ Π½Π° ΡΡ‚ΠΎΡ€ΠΎΠ½Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΠΈ ΠΎΡ‚ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π”Π°Π²Π°ΠΉΡ‚Π΅ разбСрСмся Π² ΡΡ‚ΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°Ρ… Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ.Β 

ВСкст ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ относятся ΠΊ Next.js 13.4 ΠΈ ΡΡ‚Π°Ρ€ΡˆΠ΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ React Server Components ΠΎΠ±Ρ€Π΅Π»ΠΈ статус stable ΠΈ ΡΡ‚Π°Π»ΠΈ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° Nextjs.Β 

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сСрвСрный ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ (RSC), ΠΈ ΠΊΠ°ΠΊ ΠΎΠ½ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΡ‚ся

Β 

React Server Components рСндСрятся ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π° ΡΠ΅Ρ€Π²Π΅Ρ€Π΅. Π˜Ρ… ΠΊΠΎΠ΄ Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ся Π² Ρ„Π°ΠΉΠ» JavaScript Π±Π°Π½Π΄Π»Π°, поэтому ΠΎΠ½ΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π³ΠΈΠ΄Ρ€Π°Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ²Π°ΡŽΡ‚ся.

Β 

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ всС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ сСрвСрными. Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ автоматичСски Π²Π½Π΅Π΄Ρ€ΠΈΡ‚ΡŒ сСрвСрный Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³ Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΈ Π½Π΅ΠΎΠ±Ρ…одимости ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈΠ· ΡΠ΅Ρ€Π²Π΅Ρ€Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° клиСнтский ΠΏΠΎΠ·ΠΆΠ΅.

Β 

RSC рСндСрится Π² Π΄Π²Π° ΡΡ‚Π°ΠΏΠ°, Π½Π° ΡΠ΅Ρ€Π²Π΅Ρ€Π΅:

  1. React Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΡ‚ сСрвСрныС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π² ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ RSC Payload.
  2. Next.js ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ RSC payload ΠΈ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΠΈ JavaScript для ΠΊΠ»ΠΈΠ΅Π½Ρ‚ских ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΡ‚ΡŒ HTML Π½Π° ΡΠ΅Ρ€Π²Π΅Ρ€Π΅.

Π—Π°Ρ‚Π΅ΠΌ, Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅:

  1. HTML ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Β ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ показа быстрого ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ прСдпросмотра — это Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Β ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ страницы.
  2. RSC payload ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Β ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π΅Ρ€Π΅Π²ΡŒΠ΅Π² клиСнтского ΠΈ ΡΠ΅Ρ€Π²Π΅Ρ€Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ DOM.
  3. Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΠΈ JavaScript ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для Β Π³ΠΈΠ΄Ρ€Π°Ρ‚Π°Ρ†ΠΈΠΈ клиСнтских ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΡ интСрактивности прилоТСния.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ RSC payload?

Β 

RSC payloadΒ β€” это ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΎΠ΅ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ΅ прСдставлСниС ΠΎΡ‚Ρ€Π΅Π½Π΄Π΅Ρ€Π΅Π½Π½ΠΎΠ³ΠΎ Π΄Π΅Ρ€Π΅Π²Π° сСрвСрных ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² React. RSC payload ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π½Π° Β ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅ для Β ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ DOM Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° ΠΈ ΡΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚:

Β 

  1. ΠžΡ‚Ρ€Π΅Π½Π΄Π΅Ρ€Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ сСрвСрных ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ².
  2. ΠŸΠ»Π΅ΠΉΡΡ…ΠΎΠ»Π΄Π΅Ρ€Ρ‹ для Ρ‚ΠΎΠ³ΠΎ, Π³Π΄Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚Ρ€Π΅Π½Π΄Π΅Ρ€Π΅Π½Π½Ρ‹Π΅ клиСнтскиС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, ΠΈ ΡΡΡ‹Π»ΠΊΠΈ Π½Π° ΠΈΡ… JavaScript Ρ„Π°ΠΉΠ»Ρ‹-Ρ‡Π°Π½ΠΊΠΈ.
  3. Π›ΡŽΠ±Ρ‹Π΅ пропсы, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· ΡΠ΅Ρ€Π²Π΅Ρ€Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Π² ΠΊΠ»ΠΈΠ΅Π½Ρ‚ский ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° RSC

  1. Π£Π»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ прилоТСния Ρ‚.ΠΊ. Π½Π° Β ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π½Π΅ Β ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ тяТСлыС зависимости, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для Β Ρ€Π΅Π½Π΄Π΅Ρ€Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Π½Π° Β ΡΠ΅Ρ€Π²Π΅Ρ€Π΅ (Markdown, code highlighter ΠΈ Β Ρ‚.Β ΠΏ.)
  2. Π£Π»ΡƒΡ‡ΡˆΠ°ΡŽΡ‚ΡΡ web vitals ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ прилоТСния (TTI ΠΈ Β Ρ‚.Β ΠΏ.)
  3. HTML streamingΒ ΠΏΡ€ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠΈ RSC ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Ρ€Π°Π·Π±ΠΈΠ²Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΠΎ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Ρƒ Π½Π° Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈΡ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ готовности. Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ части страницы Ρ€Π°Π½ΡŒΡˆΠ΅, Π½Π΅ Π΄ΠΎΠΆΠΈΠ΄Π°ΡΡΡŒ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π° всСй страницы Π½Π° ΡΠ΅Ρ€Π²Π΅Ρ€Π΅.

НСдостатки RSC

  1. RSC payload ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ HTML
  2. На ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΡ‚Π΅Ρ‡ΡŒ сСкрСты ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΡΠ΅Ρ€Π²Π΅Ρ€Π° (Ρ‚ΠΎΠΊΠ΅Π½Ρ‹, ΠΊΠ»ΡŽΡ‡ΠΈ ΠΈ Ρ‚.ΠΏ.). Вопросы бСзопасности next.js ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ описаны Π² Β ΡΡ‚ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅.
  3. ΠŸΠΎΠ²Ρ‹ΡˆΠ΅Π½Π½Π°Ρ ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΏΡ€ΠΈ Π²Ρ‹Π±ΠΎΡ€Π΅ Ρ‚ΠΈΠΏΠ° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Π²ΠΎ Π²Ρ€Π΅ΠΌΡ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ прилоТСния ΠΈ, скорСС всСго, потрСбуСтся врСмя Π½Π° ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ клиСнтский ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, ΠΈ ΠΊΠ°ΠΊ ΠΎΠ½ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΡ‚ся

ΠšΠ»ΠΈΠ΅Π½Ρ‚ΡΠΊΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π²Π°ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ отрисовываСтся Π½Π° ΡΠ΅Ρ€Π²Π΅Ρ€Π΅ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ клиСнтский JavaScript для Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅.

Для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ страницы Next.js ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Β API React для Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π° статичСского прСдпросмотра HTML Π½Π° Β ΡΠ΅Ρ€Π²Π΅Ρ€Π΅ ΠΊΠ°ΠΊ Β Π΄Π»Ρ Β ΠΊΠ»ΠΈΠ΅Π½Ρ‚ских, Ρ‚Π°ΠΊ ΠΈ Π΄Π»Ρ Β ΡΠ΅Ρ€Π²Π΅Ρ€Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ². Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Β ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ€Π°Π· ΠΏΠΎΡΠ΅Ρ‰Π°Π΅Ρ‚ вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΎΠ½ ΡΡ€Π°Π·Ρƒ Π²ΠΈΠ΄ΠΈΡ‚ содСрТимоС страницы, Π±Π΅Π· Β ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, Ρ€Π°Π·Π±ΠΎΡ€Π° ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π±Π°Π½Π΄Π»Π° JavaScript клиСнтского ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°.

НСсмотря Π½Π° Β ΠΈΡ… Π½Π°Π·Π²Π°Π½ΠΈΠ΅, «клиСнтскиС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹Β» рСндСрятся Π½Π° Β ΡΠ΅Ρ€Π²Π΅Ρ€Π΅ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ся ΠΊΠ°ΠΊ Β Π½Π° Β ΡΠ΅Ρ€Π²Π΅Ρ€Π΅, Ρ‚Π°ΠΊ ΠΈ Π½Π° Β ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅.

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π»Π΅Π³ΠΊΠΎ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ сСрвСрный ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π² ΠΊΠ»ΠΈΠ΅Π½Ρ‚ский, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ β€˜use client’ Π² Π½Π°Ρ‡Π°Π»ΠΎ Ρ„Π°ΠΉΠ»Π° ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π² Π΅Π³ΠΎ Π² Β counter.client.js:


'use client';
 
export default function Counter() {
  return 
Counter - client component
; }

Когда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ сСрвСрный, a ΠΊΠΎΠ³Π΄Π° клиСнтский ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚?

Π’Ρ‹Π±ΠΎΡ€ ΠΌΠ΅ΠΆΠ΄Ρƒ сСрвСрными ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚скими ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ зависит ΠΎΡ‚ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ. Π‘Π΅Ρ€Π²Π΅Ρ€Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ идСально подходят для ΡΡ†Π΅Π½Π°Ρ€ΠΈΠ΅Π², Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΡ… доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ Π½Π° ΡΠ΅Ρ€Π²Π΅Ρ€Π΅ Π²ΠΎ Π²Ρ€Π΅ΠΌΡ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π° ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΡ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ доступны Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅. ΠšΠ»ΠΈΠ΅Π½Ρ‚ΡΠΊΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, Π½Π°ΠΏΡ€ΠΎΡ‚ΠΈΠ², эффСктивны для ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… элСмСнтов, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… React hooks ΠΈ API Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ Ρ‚ΠΈΠΏ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ Π² Ρ‚ΠΎΠΌ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΌ случаС, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉΒ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉΒ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Π½ΠΎΠΉ Π½Π° ΡΠ°ΠΉΡ‚Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ next.js

Π’ RSC ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ React hooks, Context ΠΈΠ»ΠΈ API Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°. Однако ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ API ΡΠ΅Ρ€Π²Π΅Ρ€Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ headers, cookie ΠΈ Ρ‚. Π΄.

Π’Π°ΠΆΠ½ΠΎ: Π‘Π΅Ρ€Π²Π΅Ρ€Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ клиСнтскиС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹. Π‘Π΅Ρ€Π²Π΅Ρ€Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ клиСнтскиС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹.

Когда ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ клиСнтскиС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ React hooks, Context ΠΈ API, доступныС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Однако ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ API, доступныС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΡΠ΅Ρ€Π²Π΅Ρ€Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°Ρ…, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ headers, cookie ΠΈ Ρ‚. Π΄.

Π’Π°ΠΆΠ½ΠΎ: ΠšΠ»ΠΈΠ΅Π½Ρ‚ΡΠΊΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹Β Π½Π΅ Β ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сСрвСрныС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, Π½ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ сСрвСрный ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅Π³ΠΎ элСмСнта ΠΈΠ»ΠΈ ΡΠ²ΠΎΠΉΡΡ‚Π²Π° клиСнтского ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°.

Π‘ появлСниСм React Server Components ΠΎΠ±Ρ‰Π΅ΠΉ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠ΅ΠΉ стало ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ клиСнтских ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π² ΠΊΠΎΠ½Ρ†Π΅Π²Ρ‹Π΅ ΡƒΠ·Π»Ρ‹ вашСго Π΄Π΅Ρ€Π΅Π²Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², Π³Π΄Π΅ ΡΡ‚ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. Однако ΠΈΠ½ΠΎΠ³Π΄Π° трСбуСтся условноС ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ сСрвСрных ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ интСрактивности Π½Π° ΡΡ‚ΠΎΡ€ΠΎΠ½Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°.Β 

Допустим, Ρƒ Π½Π°Ρ Π΅ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ клиСнтский ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚:


'use client'
 
import { useState } from 'react'
 
export default function ClientComponent({
  children,
}: {
  children: React.ReactNode
}) {
  const [show, setShow] = useState(false)
 
  return (
    <>
      
      {show && children}
    
  )
}

ClientComponentΒ Π½Π΅ Β Π·Π½Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Β Π΅Π³ΠΎ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ элСмСнты Π² Β ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ Ρ€Π΅Π½Π΄Π΅Ρ€Π° сСрвСрного ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°. ЕдинствСнная ΠΎΠ±ΡΠ·Π°Π½Π½ΠΎΡΡ‚ΡŒΒ ClientComponentΒ β€” Ρ€Π΅ΡˆΠΈΡ‚ΡŒ, ΠΊΡƒΠ΄Π° Π² Β ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½Ρ‹ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ элСмСнты.


// This pattern works:
// You can pass a Server Component as a child or prop of a 
// Client Component.
import ClientComponent from './client-component'
import ServerComponent from './server-component'
 
// Pages in Next.js are Server Components by default
export default function Page() {
  return (
    
      
    
  )
}

Π‘ Ρ‚Π°ΠΊΠΈΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠΌ <ClientComponent> ΠΈ <ServerComponent> Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Ρ‹ Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π° ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚Ρ€Π΅Π½Π΄Π΅Ρ€Π΅Π½Ρ‹ нСзависимо. Π’ ΡΡ‚ΠΎΠΌ случаС Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ <ServerComponent> ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚Ρ€Π΅Π½Π΄Π΅Ρ€Π΅Π½ Π½Π° ΡΠ΅Ρ€Π²Π΅Ρ€Π΅ Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ <ClientComponent> Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Ρ€Π΅Π½Π΄Π΅Ρ€Π΅Π½ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅.

ВсС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ совмСстного использования сСрвСрных ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ских ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² подробно описаны Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

FAQ

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Next.js React Server Components (RSC)?

React Server Components (RSC) ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π½ΠΎΠ²Ρ‹ΠΉ способ создания ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Ρ€Π°Π·Π΄Π΅Π»ΡΡ‚ΡŒ ΠΊΠΎΠ΄ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ ΠΈ ΡΠ΅Ρ€Π²Π΅Ρ€ΠΎΠΌ. Π­Ρ‚ΠΎ ΡΡ‚ановится особСнно ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ для Β ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² с Β Π±ΠΎΠ»ΡŒΡˆΠΈΠΌ объСмом Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ Β Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΠΈΠΌ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ΠΎΠΌ.

Как связаны RSC ΠΈ Next.js? ΠœΠΎΠ³Ρƒ Π»ΠΈ Ρ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ RSC Π±Π΅Π· Next.js?

RSC тСсно ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ с Β Next.js ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ возмоТности для Β ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ страницы. Π₯отя тСорСтичСски Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ RSC ΠΈ Π±Π΅Π· Β ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΡ Next.js, это Π±ΡƒΠ΄Π΅Ρ‚ Π³ΠΎΡ€Π°Π·Π΄ΠΎ слоТнСС ΠΈ ΠΌΠ΅Π½Π΅Π΅ эффСктивно. Next.js прСдоставляСт ΡƒΠ΄ΠΎΠ±Π½ΡƒΡŽ инфраструктуру для Β Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Β RSC, Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ ΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡ‚Π²ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ±Π»Π΅Π³Ρ‡Π°ΡŽΡ‚ процСсс Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

Как это ΡΠ²ΡΠ·Π°Π½ΠΎ с Suspense?

API для Β ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΡ Π΄Π°Π½Π½Ρ‹Ρ… Server Components ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ с Β Suspense. RSC ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Suspense для Β ΠΏΡ€Π΅Π΄ΠΎΡΡ‚авлСния состояний Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈ Ρ€Π°Π·Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ частСй ΠΏΠΎΡ‚ΠΎΠΊΠ°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΌΠΎΠ³ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ что‑то Π΄ΠΎ Β Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Β Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ вСсь ΠΎΡ‚Π²Π΅Ρ‚.

КакиС прСимущСства ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π΄Π°Π΅Ρ‚ использованиС RSC?

Server Components ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π²Π°ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ получСния Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° Β ΡΠ΅Ρ€Π²Π΅Ρ€, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ Π½Π΅ Β ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ запросов. Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ избавляСт ΠΎΡ‚ Β Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Ρ… для Β ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΡ Π΄Π°Π½Π½Ρ‹Ρ… Π² Β useEffect network waterfalls Π½Π° Β ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅.

Server Components Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π½Π΅ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Β Π²Π°ΡˆΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±Π΅Π· Β ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΡ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° JS Π±Π°Π½Π΄Π»Π°. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ с Β ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Π½Π° Β ΡΠ΅Ρ€Π²Π΅Ρ€ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° ΠΈ Π²Ρ€Π΅ΠΌΡ Ρ€Π°Π·Π±ΠΎΡ€Π° клиСнтского JS. Π’Π°ΠΊΠΆΠ΅ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΠ΅ числа ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΡƒΠ»ΡƒΡ‡ΡˆΠ°Π΅Ρ‚ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ процСссора ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°. ΠšΠ»ΠΈΠ΅Π½Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ сСрвСрно‑сгСнСрированныС части Π΄Π΅Ρ€Π΅Π²Π° Π²ΠΎ Β Π²Ρ€Π΅ΠΌΡ согласования, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Β ΠΎΠ½ Π·Π½Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Β ΠΎΠ½ΠΈ Π½Π΅ Β ΠΌΠΎΠ³Π»ΠΈΒ Π±Ρ‹Ρ‚ΡŒ Π·Π°Ρ‚Ρ€ΠΎΠ½ΡƒΡ‚Ρ‹ обновлСниями состояния.

ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π»ΠΈ Π½ΡƒΠΆΠ½ΠΎ ΠΌΠ½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ RSC?

Если Ρƒ Β Π²Π°Ρ ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ клиСнтскоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΊΠ°ΠΊ Β Π΄Π΅Ρ€Π΅Π²ΠΎ клиСнтских ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ². Если это Π²Π°Ρ ΡƒΡΡ‚Ρ€Π°ΠΈΠ²Π°Π΅Ρ‚, Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ! Π‘Π΅Ρ€Π²Π΅Ρ€Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Ρ€Π°ΡΡˆΠΈΡ€ΡΡŽΡ‚ React для Β ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… сцСнариСв ΠΈ Π½Π΅ Β ΡΠ²Π»ΡΡŽΡ‚ся Π·Π°ΠΌΠ΅Π½ΠΎΠΉ клиСнтским ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌ.

ЯвляСтся Π»ΠΈ ΡΡ‚ΠΎ Π·Π°ΠΌΠ΅Π½ΠΎΠΉ SSR?

НСт, ΠΎΠ½ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΡΡŽΡ‚ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π°. SSR Π² Β ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ являСтся тСхникой быстрого отобраТСния Π½Π΅ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ вСрсии клиСнтских ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ². Π’Π°ΠΌ Π²ΡΠ΅ Ρ€Π°Π²Π½ΠΎ придСтся ΠΏΠ»Π°Ρ‚ΠΈΡ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, Ρ€Π°Π·Π±ΠΎΡ€Π° ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ этих клиСнтских ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² послС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ исходного HTML.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ сСрвСрныС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΈ SSR, Π³Π΄Π΅ ΡΠ΅Ρ€Π²Π΅Ρ€Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ рСндСрятся ΠΏΠ΅Ρ€Π²Ρ‹ΠΌΠΈ, Π° Β ΠΊΠ»ΠΈΠ΅Π½Ρ‚скиС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ рСндСрятся Π² Β HTML для Β Π±Ρ‹ΡΡ‚Ρ€ΠΎΠ³ΠΎ Π½Π΅ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ отобраТСния Π²ΠΎ Β Π²Ρ€Π΅ΠΌΡ Π³ΠΈΠ΄Ρ€Π°Ρ‚Π°Ρ†ΠΈΠΈ. Когда ΠΎΠ½ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΡƒΡŽΡ‚ся Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π²Ρ‹ Π²ΡΠ΅ Ρ€Π°Π²Π½ΠΎ получаСтС быстрый запуск, Π½ΠΎ Β Ρ‚Π°ΠΊΠΆΠ΅ сущСствСнно сниТаСтС объСм Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΠΎΠ³ΠΎ Π½Π° Β ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅ JS.

ΠœΠΎΠ³Ρƒ Π»ΠΈ Ρ ΠΏΠΎΡΡ‚Π΅ΠΏΠ΅Π½Π½ΠΎ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π° RSC, пСрСписывая ΠΊΠΎΠ΄ΠΎΠ²ΡƒΡŽ Π±Π°Π·Ρƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°?

Π”Π°, с Β Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠΌ app router ΠΈ RSC, ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ по‑прСТнСму Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈ ΠΌΠΎΠΆΠ½ΠΎ постСпСнно ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π° Β RSC ΠΏΠΎΠ΄Ρ…ΠΎΠ΄. Π—Π΄Π΅ΡΡŒ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Β RSC ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Β app router. Π•ΡΡ‚ΡŒ подробноС руководство ΠΏΠΎ Β ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Ρƒ Π½Π° Β app router.

ΠŸΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ссылки

  1. Understanding React Server ComponentsΒ β€” Vercel
  2. Preventing sensitive data from being exposed to the client