با آبرسانی انتخابی React، عملکرد وب را سریعتر کنید. این راهنمای جامع نحوه عملکرد آبرسانی در سطح کامپوننت، مزایای آن برای تجربه کاربر و استراتژیهای پیادهسازی عملی برای برنامههای جهانی را توضیح میدهد.
تسلط بر عملکرد وب: بررسی عمیق آبرسانی انتخابی React
در چشم انداز دیجیتال مدرن، سرعت فقط یک ویژگی نیست. بلکه اساس یک تجربه کاربری مثبت است. برای برنامههای جهانی، جایی که کاربران به محتوا در طیف گستردهای از دستگاهها و شرایط شبکه دسترسی دارند، عملکرد بسیار مهم است. یک سایت با بارگیری کند میتواند منجر به ناامیدی کاربر، نرخ پرش بالاتر و از دست دادن درآمد شود. سالهاست که توسعه دهندگان از رندرینگ سمت سرور (SSR) برای بهبود زمان بارگذاری اولیه استفاده میکنند، اما این کار با یک معامله مهم همراه بود: یک صفحه غیر تعاملی تا زمانی که کل بسته جاوا اسکریپت بارگیری و اجرا شود. اینجاست که React 18 یک مفهوم انقلابی را معرفی کرد: آبرسانی انتخابی.
این راهنمای جامع به بررسی پیچیدگیهای آبرسانی انتخابی میپردازد. ما از اصول رندرینگ وب به مکانیک پیشرفته ویژگیهای همزمان React سفر خواهیم کرد. شما نه تنها خواهید آموخت که آبرسانی انتخابی چیست، بلکه چگونه کار میکند، چرا برای Core Web Vitals یک تغییر دهنده بازی است و چگونه میتوانید آن را در پروژههای خود پیادهسازی کنید تا برنامههای سریعتر و مقاومتری را برای مخاطبان در سراسر جهان بسازید.
تکامل رندرینگ در React: از CSR به SSR و فراتر از آن
برای درک واقعی نوآوری آبرسانی انتخابی، ابتدا باید مسیری را که ما را به اینجا رسانده است، درک کنیم. نحوه رندر کردن صفحات وب به طور قابل توجهی تکامل یافته است و هر مرحله با هدف حل محدودیتهای مرحله قبلی انجام شده است.
رندرینگ سمت کلاینت (CSR): ظهور SPA
در روزهای اولیه برنامههای تک صفحهای (SPA) که با کتابخانههایی مانند React ساخته شده بودند، رندرینگ سمت کلاینت استاندارد بود. این فرآیند ساده است:
- سرور یک فایل HTML حداقلی، اغلب فقط یک عنصر `` و پیوندهایی به فایلهای بزرگ جاوا اسکریپت ارسال میکند.
- مرورگر جاوا اسکریپت را بارگیری میکند.
- React در مرورگر اجرا میشود، کامپوننتها را رندر میکند و DOM را میسازد و صفحه را قابل مشاهده و تعاملی میکند.
مزایا: CSR تجربههای بسیار تعاملی و شبیه به برنامه را پس از بارگیری اولیه امکان پذیر میکند. انتقال بین صفحات سریع است زیرا نیازی به بارگیری مجدد کامل صفحه نیست.
معایب: زمان بارگیری اولیه میتواند به طرز دردناکی کند باشد. کاربران یک صفحه سفید خالی را میبینند تا زمانی که جاوا اسکریپت بارگیری، تجزیه و اجرا شود. این منجر به First Contentful Paint (FCP) ضعیف میشود و برای بهینه سازی موتور جستجو (SEO) مضر است، زیرا خزندههای موتور جستجو اغلب یک صفحه خالی را میبینند.رندرینگ سمت سرور (SSR): سرعت و SEO به کمک می آیند
SSR برای حل مشکلات اصلی CSR معرفی شد. با SSR، کامپوننتهای React به یک رشته HTML در سرور رندر میشوند. سپس این HTML کاملاً شکل گرفته به مرورگر ارسال میشود.
- مرورگر HTML را دریافت و بلافاصله رندر میکند، بنابراین کاربر تقریباً بلافاصله محتوا را میبیند (FCP عالی).
- خزندههای موتور جستجو میتوانند محتوا را به طور موثر فهرست بندی کنند و SEO را تقویت کنند.
- در پس زمینه، همان بسته جاوا اسکریپت بارگیری میشود.
- پس از بارگیری، React روی کلاینت اجرا میشود، شنوندگان رویداد و حالت را به HTML رندر شده توسط سرور موجود متصل میکند. این فرآیند آبرسانی نامیده میشود.
"دره وهمی" SSR سنتی
در حالی که SSR مشکل صفحه خالی را حل کرد، یک مشکل جدید و ظریفتر را معرفی کرد. صفحه به نظر تعاملی میرسد، خیلی قبل از اینکه واقعاً باشد. این یک "دره وهمی" ایجاد میکند که در آن کاربر یک دکمه را میبیند، روی آن کلیک میکند و هیچ اتفاقی نمیافتد. این به این دلیل است که جاوا اسکریپت مورد نیاز برای کارکرد آن دکمه هنوز کار آبرسانی کل صفحه را به پایان نرسانده است.
این ناامیدی ناشی از آبرسانی یکپارچه است. در نسخههای React قبل از 18، آبرسانی یک امر همه یا هیچ بود. کل برنامه باید در یک پاس واحد آبرسانی میشد. اگر یک کامپوننت فوقالعاده کند داشتید (شاید یک نمودار پیچیده یا یک ویجت سنگین شخص ثالث)، از آبرسانی کل صفحه جلوگیری میکرد. سربرگ، نوار کناری و محتوای اصلی شما ممکن است ساده باشند، اما تا زمانی که کندترین کامپوننت نیز آماده نباشد، نمیتوانند تعاملی شوند. این اغلب منجر به Time to Interactive (TTI) ضعیف میشود، یک معیار حیاتی برای تجربه کاربر.
آبرسانی چیست؟ باز کردن مفهوم اصلی
بیایید درک خود را از آبرسانی اصلاح کنیم. یک صحنه فیلم را تصور کنید. سرور مجموعه ثابت (HTML) را میسازد و آن را برای شما ارسال میکند. واقعی به نظر میرسد، اما بازیگران (جاوا اسکریپت) هنوز نرسیدهاند. آبرسانی فرآیند ورود بازیگران به صحنه، قرار گرفتن در موقعیتهای خود و زنده کردن صحنه با عمل و گفتگو (شنوندگان رویداد و حالت) است.
در آبرسانی سنتی، هر یک از بازیگران، از ستاره اصلی گرفته تا سیاهی لشکر، باید در جای خود قرار میگرفتند تا کارگردان بتواند فریاد بزند "Action!". اگر یک بازیگر در ترافیک گیر کرده بود، کل تولید متوقف میشد. این دقیقاً همان مشکلی است که آبرسانی انتخابی حل میکند.
معرفی آبرسانی انتخابی: تغییر دهنده بازی
آبرسانی انتخابی، رفتار پیش فرض در React 18 هنگام استفاده از SSR جریانی، از مدل یکپارچه رها میشود. این به برنامه شما اجازه میدهد تا به صورت قطعه قطعه آبرسانی شود و قسمتهایی را که مهمتر هستند یا کاربر با آنها تعامل دارد، اولویت بندی کند.
در اینجا نحوه تغییر اساسی بازی آمده است:
- آبرسانی غیر مسدود کننده: اگر یک کامپوننت هنوز برای آبرسانی آماده نیست (به عنوان مثال، کد آن باید از طریق `React.lazy` بارگیری شود)، دیگر از بقیه صفحه جلوگیری نمیکند. React به سادگی از آن رد میشود و کامپوننت بعدی موجود را آبرسانی میکند.
- HTML جریانی با Suspense: به جای منتظر ماندن برای یک کامپوننت کند در سرور، React میتواند یک بازگشت (مانند یک اسپینر) را در جای خود ارسال کند. هنگامی که کامپوننت کند آماده شد، HTML آن به کلاینت ارسال میشود و به طور یکپارچه جایگزین میشود.
- آبرسانی اولویت بندی شده توسط کاربر: این درخشانترین قسمت است. اگر کاربر قبل از آبرسانی با یک کامپوننت تعامل داشته باشد (به عنوان مثال، روی یک دکمه کلیک کند)، React آبرسانی آن کامپوننت خاص و والدین آن را در اولویت قرار میدهد. این رویداد را ضبط میکند و پس از اتمام آبرسانی آن را پخش میکند و باعث میشود برنامه فوراً پاسخگو باشد.
با بازبینی قیاس فروشگاه خود: با آبرسانی انتخابی، مشتریان میتوانند به محض آماده شدن، تسویه حساب کرده و ترک کنند. بهتر از آن، اگر یک مشتری عجول در نزدیکی صندوقدار باشد، مدیر فروشگاه (React) میتواند آنها را در اولویت قرار دهد و به آنها اجازه دهد به جلوی صف بروند. این رویکرد کاربر محور است که باعث میشود تجربه بسیار سریعتر به نظر برسد.
ستونهای آبرسانی انتخابی: Suspense و رندرینگ همزمان
آبرسانی انتخابی جادو نیست. بلکه نتیجه دو ویژگی قدرتمند و مرتبط در React است: Suspense سمت سرور و رندرینگ همزمان.
درک React Suspense در سرور
شاید با استفاده از `
` در کلاینت برای تقسیم کد با `React.lazy` آشنا باشید. در سرور، نقش مشابه اما قدرتمندتری ایفا میکند. وقتی یک کامپوننت را در یک مرز ` ` میپیچید، به React میگویید: "این قسمت از UI ممکن است بلافاصله آماده نباشد. منتظر آن نمانید. در حال حاضر یک بازگشت ارسال کنید و هنگامی که محتوای واقعی آماده شد، آن را ارسال کنید." صفحهای با بخش جزئیات محصول و ویجت نظرات رسانههای اجتماعی را در نظر بگیرید. ویجت نظرات اغلب به یک API شخص ثالث متکی است و میتواند کند باشد.
```jsx // قبل: سرور منتظر میماند تا fetchComments() حل شود و کل صفحه را به تأخیر میاندازد. function ProductPage({ productId }) { const comments = fetchComments(productId); return ( <>> ); } // بعد: با Suspense، سرور بلافاصله ProductDetails را ارسال میکند. import { Suspense } from 'react'; const Comments = React.lazy(() => import('./Comments.js')); function ProductPage() { return ( <> }> > ); } ``` با این تغییر، سرور منتظر کامپوننت `Comments` نمیماند. HTML را برای `ProductDetails` و بازگشت `Spinner` بلافاصله ارسال میکند. کد برای کامپوننت `Comments` در پس زمینه در کلاینت بارگیری میشود. پس از رسیدن، React آن را آبرسانی میکند و اسپینر را جایگزین میکند. کاربر میتواند اطلاعات اصلی محصول را خیلی زودتر ببیند و با آن تعامل داشته باشد.
نقش رندرینگ همزمان
رندرینگ همزمان موتور زیربنایی است که این امر را ممکن میسازد. این به React اجازه میدهد تا کار رندرینگ را بدون مسدود کردن رشته اصلی مرورگر متوقف کند، از سر بگیرد یا رها کند. آن را به عنوان یک مدیر وظیفه پیچیده برای به روز رسانیهای UI در نظر بگیرید.
در زمینه آبرسانی، همزمانی چیزی است که React را قادر میسازد:
- آبرسانی را شروع کنید صفحه به محض رسیدن HTML اولیه و مقداری جاوا اسکریپت.
- آبرسانی را متوقف کنید اگر کاربر روی یک دکمه کلیک کند.
- اولویت بندی تعامل کاربر، آبرسانی دکمه کلیک شده و اجرای کنترل کننده رویداد آن.
- آبرسانی را از سر بگیرید بقیه صفحه در پس زمینه پس از رسیدگی به تعامل.
این مکانیسم وقفه بسیار مهم است. این اطمینان میدهد که ورودی کاربر بلافاصله رسیدگی میشود و به طور چشمگیری معیارهایی مانند First Input Delay (FID) و Interaction to Next Paint (INP) جدیدتر و جامعتر را بهبود میبخشد. صفحه هرگز منجمد نمیشود، حتی در حالی که هنوز در پس زمینه در حال بارگیری و آبرسانی است.
پیادهسازی عملی: آوردن آبرسانی انتخابی به برنامه خود
تئوری عالی است، اما بیایید عملی کنیم. چگونه این ویژگی قدرتمند را در برنامه React خود فعال میکنید؟
پیش نیازها و تنظیمات
ابتدا مطمئن شوید که پروژه شما به درستی تنظیم شده است:
- به React 18 ارتقا دهید: هر دو بسته `react` و `react-dom` باید نسخه 18.0.0 یا بالاتر باشند.
- از `hydrateRoot` در کلاینت استفاده کنید: `ReactDOM.hydrate` قدیمی را با API جدید `hydrateRoot` جایگزین کنید. این API جدید برنامه شما را در ویژگیهای همزمان انتخاب میکند.
```jsx
// client/index.js
import { hydrateRoot } from 'react-dom/client';
import App from './App';
const container = document.getElementById('root');
hydrateRoot(container,
); ``` - از یک API جریانی در سرور استفاده کنید: باید از یک رندر کننده جریانی استفاده کنید. برای محیطهای Node.js مانند Express یا Next.js، این `renderToPipeableStream` است. محیطهای دیگر معادلهای خود را دارند (به عنوان مثال، `renderToReadableStream` برای Deno یا Cloudflare Workers).
مثال کد: یک راهنمای گام به گام
بیایید یک مثال ساده با استفاده از Express.js بسازیم تا جریان کامل را نشان دهیم.
ساختار برنامه ما:
- یک کامپوننت `App` حاوی یک `
` و یک ناحیه محتوای ` `. - یک کامپوننت `
` که بلافاصله در دسترس است. - یک کامپوننت کند `
` که کد را تقسیم کرده و تعلیق خواهیم کرد.
مرحله 1: سرور (`server.js`)
در اینجا، ما از `renderToPipeableStream` برای ارسال HTML در قطعات استفاده میکنیم.
```jsx // server.js import express from 'express'; import fs from 'fs'; import path from 'path'; import React from 'react'; import ReactDOMServer from 'react-dom/server'; import App from './src/App'; const app = express(); app.use('^/$', (req, res, next) => { const { pipe } = ReactDOMServer.renderToPipeableStream(, { bootstrapScripts: ['/main.js'], onShellReady() { res.setHeader('content-type', 'text/html'); pipe(res); } } ); }); app.use(express.static(path.resolve(__dirname, 'build'))); app.listen(3000, () => { console.log('Server is listening on port 3000'); }); ``` مرحله 2: کامپوننت اصلی برنامه (`src/App.js`)
ما از `React.lazy` برای وارد کردن پویا `CommentsSection` خود و پیچیدن آن در `
```jsx // src/App.js import React, { Suspense } from 'react'; const CommentsSection = React.lazy(() => import('./CommentsSection')); const Spinner = () =>` استفاده خواهیم کرد. Loading comments...
; function App() { return (); } export default App; ```My Awesome Blog Post
This is the main content. It loads instantly and is interactive right away.
}> مرحله 3: کامپوننت کند (`src/CommentsSection.js`)
برای شبیه سازی یک کامپوننت کند، میتوانیم یک ابزار ساده ایجاد کنیم که یک promise را برای به تأخیر انداختن حل آن میپیچد. در یک سناریوی دنیای واقعی، این تأخیر میتواند به دلیل محاسبات پیچیده، یک بسته کد بزرگ یا واکشی داده باشد.
```jsx // یک ابزار برای شبیه سازی تأخیر شبکه function delay(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } // src/CommentsSection.js import React from 'react'; // شبیه سازی بارگیری آهسته ماژول await delay(3000); function CommentsSection() { return (); } export default CommentsSection; ```Comments
- Great post!
- Very informative, thank you.
(توجه: `await` سطح بالا به یک تنظیمات بسته بندی مدرن پیکربندی شده برای آن نیاز دارد.)
چه اتفاقی در طول زمان اجرا میافتد؟
- درخواست: کاربر صفحه را درخواست میکند.
- جریان اولیه: سرور Node.js رندرینگ را شروع میکند. این `nav`، `h1`، `p` و `button` را رندر میکند. وقتی به مرز `
` برای `CommentsSection` میرسد، منتظر نمیماند. HTML بازگشتی (` Loading comments...
`) را ارسال میکند و ادامه میدهد. قطعه HTML اولیه به مرورگر ارسال میشود. - FCP سریع: مرورگر این HTML اولیه را رندر میکند. کاربر بلافاصله نوار پیمایش و محتوای اصلی پست را میبیند. بخش نظرات یک پیام بارگیری را نشان میدهد.
- بارگذاری JS کلاینت: بسته `main.js` شروع به بارگیری میکند.
- آبرسانی انتخابی شروع میشود: پس از رسیدن `main.js`، React شروع به آبرسانی صفحه میکند. این شنوندگان رویداد را به `nav` و `button` متصل میکند. کاربر اکنون میتواند روی دکمه "Click Me" کلیک کند و هشدار را ببیند، حتی اگر نظرات هنوز "در حال بارگیری" باشند.
- کامپوننت Lazy میرسد: در پس زمینه، مرورگر کد را برای `CommentsSection.js` واکشی میکند. تأخیر 3 ثانیهای که شبیه سازی کردیم رخ میدهد.
- جریان نهایی و آبرسانی: پس از بارگیری `CommentsSection.js`، React آن را آبرسانی میکند و به طور یکپارچه `Spinner` را با لیست نظرات واقعی و فیلد ورودی جایگزین میکند. این بدون وقفه انداختن کاربر یا مسدود کردن رشته اصلی اتفاق میافتد.
این فرآیند دقیق و اولویتبندی شده ماهیت آبرسانی انتخابی است.
تجزیه و تحلیل تأثیر: مزایای عملکرد و بردهای تجربه کاربری
اتخاذ آبرسانی انتخابی فقط پیروی از آخرین روند نیست. بلکه ارائه پیشرفتهای ملموس به کاربران شما است.
بهبود Core Web Vitals
- Time to Interactive (TTI): این بیشترین بهبود را میبیند. از آنجایی که قسمتهایی از صفحه با آبرسانی تعاملی میشوند، TTI دیگر توسط کندترین کامپوننت تعیین نمیشود. TTI برای محتوای قابل مشاهده و با اولویت بالا خیلی زودتر به دست میآید.
- First Input Delay (FID) / Interaction to Next Paint (INP): این معیارها پاسخگویی را اندازه گیری میکنند. از آنجایی که رندرینگ همزمان میتواند آبرسانی را برای رسیدگی به ورودی کاربر قطع کند، تأخیر بین اقدام کاربر و پاسخ UI به حداقل میرسد. صفحه از همان ابتدا سریع و پاسخگو به نظر میرسد.
تجربه کاربری پیشرفته
معیارهای فنی مستقیماً به یک سفر کاربری بهتر تبدیل میشوند. حذف "دره وهمی" SSR یک برد بزرگ است. کاربران میتوانند اعتماد کنند که اگر میتوانند یک عنصر را ببینند، میتوانند با آن تعامل داشته باشند. برای مخاطبان جهانی در شبکههای کندتر، این تحول آفرین است. آنها دیگر مجبور نیستند قبل از استفاده از سایت منتظر بمانند تا یک بسته جاوا اسکریپت چند مگابایتی به پایان برسد. آنها یک رابط کاربری کاربردی و تعاملی را به صورت قطعه قطعه دریافت میکنند که تجربهای بسیار ظریفتر و رضایتبخشتر است.
چشم اندازی جهانی در مورد عملکرد
برای شرکتی که به پایگاه مشتریان جهانی خدمات ارائه میدهد، تنوع سرعت شبکه و قابلیتهای دستگاه یک چالش بزرگ است. کاربری که دارای اتصال 5G با یک تلفن هوشمند پیشرفته در سئول است، تجربهای کاملاً متفاوت از کاربری خواهد داشت که دارای اتصال 3G با یک دستگاه مقرون به صرفه در یک منطقه روستایی است. آبرسانی انتخابی به پر کردن این شکاف کمک میکند. با ارسال HTML و آبرسانی انتخابی، ارزش را برای کاربر در اتصال کند بسیار سریعتر ارائه میدهید. آنها ابتدا محتوای حیاتی و تعامل اولیه را دریافت میکنند، در حالی که کامپوننتهای سنگینتر در پس زمینه بارگیری میشوند. این رویکرد یک وب عادلانهتر و در دسترستر را برای همه، در همه جا ایجاد میکند.
اشتباهات رایج و بهترین روشها
برای استفاده حداکثری از آبرسانی انتخابی، این بهترین روشها را در نظر بگیرید:
شناسایی تنگناهای آبرسانی
از React DevTools Profiler برای شناسایی کامپوننتهایی استفاده کنید که طولانیترین زمان رندرینگ و آبرسانی را دارند. به دنبال کامپوننتهایی باشید که از نظر محاسباتی در کلاینت گران هستند، درختهای وابستگی بزرگی دارند یا اسکریپتهای سنگین شخص ثالث را مقداردهی اولیه میکنند. اینها نامزدهای اصلی برای پیچیده شدن در `
` هستند. استفاده استراتژیک از `
` هر کامپوننت را در `
` نپیچید. این میتواند منجر به یک تجربه بارگیری پراکنده شود. استراتژیک باشید. نامزدهای خوب برای تعلیق عبارتند از: - محتوای زیر خط: هر چیزی که کاربر در ابتدا نمیبیند.
- ویجتهای غیر بحرانی: رباتهای گفتگو، نمودارهای تجزیه و تحلیل دقیق، فیدهای رسانههای اجتماعی.
- کامپوننتهای مبتنی بر تعامل کاربر: محتوا در یک مدال یا یک تب که به طور پیش فرض قابل مشاهده نیست.
- کتابخانههای سنگین شخص ثالث: نقشههای تعاملی یا کامپوننتهای تجسم داده پیچیده.
ملاحظات واکشی داده
آبرسانی انتخابی به طور همزمان با واکشی دادههای فعال Suspense کار میکند. در حالی که React با یک راه حل خاص واکشی داده ارائه نمیشود، کتابخانههایی مانند Relay و فریم ورکهایی مانند Next.js از پشتیبانی داخلی برخوردار هستند. همچنین میتوانید هوکهای سفارشی بسازید که یک promise را برای ادغام با Suspense پرتاب میکنند و به کامپوننتهای شما اجازه میدهند تا بدون مسدود کردن جریان اولیه منتظر دادهها در سرور باشند.
پیامدهای SEO
یک نگرانی رایج در مورد تکنیکهای پیشرفته رندرینگ، SEO است. خوشبختانه، آبرسانی انتخابی برای SEO عالی است. از آنجایی که HTML اولیه هنوز در سرور رندر میشود، خزندههای موتور جستجو بلافاصله محتوای معناداری دریافت میکنند. خزندههای مدرن، مانند Googlebot، نیز میتوانند جاوا اسکریپت را پردازش کنند و محتوایی را که بعداً پخش میشود، خواهند دید. نتیجه یک صفحه سریع و قابل فهرست بندی است که برای کاربران نیز بسیار کارآمد است - یک برد-برد.
آینده رندرینگ در React: کامپوننتهای سرور
آبرسانی انتخابی یک فناوری اساسی است که راه را برای تکامل عمده بعدی در React هموار میکند: کامپوننتهای سرور React (RSC).
کامپوننتهای سرور نوع جدیدی از کامپوننت هستند که منحصراً روی سرور اجرا میشوند. آنها هیچ ردپای جاوا اسکریپت در سمت کلاینت ندارند، به این معنی که صفر کیلوبایت به اندازه بسته شما کمک میکنند. آنها برای نمایش محتوای استاتیک یا واکشی مستقیم دادهها از یک پایگاه داده عالی هستند.
چشم انداز آینده ترکیبی یکپارچه از معماریها است:
- کامپوننتهای سرور برای محتوای استاتیک و دسترسی به داده.
- کامپوننتهای کلاینت (کامپوننتهایی که امروزه استفاده میکنیم) برای تعامل.
- آبرسانی انتخابی به عنوان پلی که قسمتهای تعاملی صفحه را بدون مسدود کردن کاربر زنده میکند.
این ترکیب وعده میدهد که بهترینها را ارائه دهد: عملکرد و سادگی یک برنامه رندر شده توسط سرور با تعامل غنی یک SPA در سمت کلاینت.
نتیجه گیری: تغییری اساسی در توسعه وب
آبرسانی انتخابی React بیش از یک بهبود عملکرد تدریجی است. این نشان دهنده یک تغییر اساسی در پارادایم در نحوه ساخت برای وب است. با دور شدن از یک مدل یکپارچه، همه یا هیچ، اکنون میتوانیم برنامههایی بسازیم که دقیقتر، مقاومتر و متمرکز بر تعاملات واقعی کاربر هستند.
این به ما امکان میدهد آنچه را که مهم است اولویت بندی کنیم و تجربهای قابل استفاده و لذت بخش را حتی در شرایط شبکه چالش برانگیز ارائه دهیم. این اذعان میکند که همه قسمتهای یک صفحه وب برابر خلق نشدهاند و به توسعه دهندگان ابزارهایی میدهد تا فرآیند بارگیری را با دقت سازماندهی کنند.
برای هر توسعه دهندهای که روی یک برنامه جهانی در مقیاس بزرگ کار میکند، ارتقاء به React 18 و پذیرش آبرسانی انتخابی دیگر اختیاری نیست - ضروری است. امروز با `Suspense` و SSR جریانی آزمایش کنید. کاربران شما، مهم نیست در کجای دنیا هستند، از شما برای تجربه سریعتر، روانتر و پاسخگوتر تشکر خواهند کرد.