مقالات

Next.js 10 | Next.js


ما هیجان زده هستیم که Next.js 10 را معرفی کنیم که شامل:

لینک را به عنوان کپی کنیدمولفه تصویر داخلی و بهینه سازی خودکار تصویر

هدف ما از Next.js بهبود دو چیز است: تجربه توسعه‌دهنده و تجربه کاربر.

امسال، ما قبلاً هم روی تجربه توسعه‌دهنده و هم در بهبود عملکرد همه برنامه‌های Next.js سرمایه‌گذاری زیادی کرده‌ایم. ما بر کاهش مقدار جاوا اسکریپتی که مرورگر باید بارگیری می کند تمرکز کرده ایم.

ارائه کردیم 20 ویژگی جدید که بهره وری و تجربه توسعه دهنده را بهبود می بخشد. در همان زمان، اندازه اصلی جاوا اسکریپت Next.js بود کاهش 16 درصدی.

در ژانویه، بهترین استراتژی تقسیم کد جاوا اسکریپت را با همکاری تیم Google Chrome معرفی کردیم.

به عنوان مثال، بارنبیس یک را دید کاهش 23 درصدی در اندازه برنامه، و Sumup یک 70٪ تخفیف بزرگترین اندازه بسته جاوا اسکریپت آنها. این پیشرفت ها حاصل شد بدون تغییر کد در برنامه های Next.js خود.

شرکت‌ها این استراتژی جدید را به‌طور خودکار با ارتقای Next.js به آخرین نسخه اتخاذ کردند.

لینک را به عنوان کپی کنیدتصاویر در وب

در حالی که تمرکز ما بر کاهش مقدار جاوا اسکریپتی که مرورگر باید بارگیری کند نتیجه داده است، وب فقط جاوا اسکریپت نیست، بلکه نشانه گذاری و تصاویر نیز هست.

تصاویر 50 درصد از کل بایت صفحات وب را اشغال می کنند.

تصاویر تاثیر زیادی بر بزرگترین رنگ محتوایی دارند، زیرا اغلب بزرگترین عنصر قابل مشاهده در بارگذاری صفحه هستند. Largest Contentful Paint یک وب اصلی حیاتی است که گوگل به زودی از آن در رتبه بندی جستجوی خود استفاده خواهد کرد.

نیمی از تصاویر بیش از یک مگابایت حجم دارند، به این معنی که برای نمایش وب بهینه سازی نشده اند.

این روزها، کاربران با استفاده از تلفن، تبلت و لپ تاپ خود در وب گشت و گذار می کنند، اما تصاویر همچنان جهانی هستند. به عنوان مثال: سایت ها یک تصویر را با ابعاد 2000 در 2000 پیکسل بارگذاری می کنند، اما تلفن ها فقط آن را به صورت 100 در 100 پیکسل نمایش می دهند.

همچنین، 30 درصد از تصاویر در صفحات وب خارج از نمای اولیه هستند، به این معنی که مرورگر تصاویری را بارگیری می کند که کاربر تا زمانی که صفحه را به سمت پایین حرکت نکند، نمی بیند.

تصاویر اغلب اینطور نیستند width و height خاصیتی که باعث می شود هنگام بارگیری صفحه از آن ها پرش کنند. این به تغییر تجمعی طرح‌بندی حیاتی وب اصلی آسیب می‌زند.

99.7 درصد از تصاویر در وب سایت ها از فرمت های گرافیکی مدرن مانند WebP استفاده نمی کنند.

برای استفاده موثر از تصاویر در صفحات وب، باید جنبه های زیادی را در نظر گرفت: اندازه، وزن، بارگذاری آهسته و فرمت های تصویر مدرن.

توسعه‌دهندگان باید ابزارهای ساخت پیچیده‌ای را برای بهینه‌سازی تصاویر راه‌اندازی کنند، اما این ابزارها معمولاً تصاویر ارسال‌شده توسط کاربر که از منبع داده‌های خارجی می‌آیند را پوشش نمی‌دهند و بهینه‌سازی همه تصاویر را غیرممکن می‌کنند.

این کار توسعه غیرممکن ناگزیر به یک تجربه کاربر نهایی خسته کننده منجر می شود.

لینک را به عنوان کپی کنیدجزء تصویر Next.js

ما بسیار هیجان زده هستیم که راه حل خود را برای تصاویر مؤثر در وب اعلام کنیم: مؤلفه تصویر Next.js و بهینه سازی خودکار تصویر.

در ابتدایی ترین شکل، کامپوننت تصویر Next.js به سادگی جایگزینی برای HTML است عنصری که برای وب مدرن طراحی شده است.

img
  src="/profile-picture.jpg"
  width="400"
  height="400"
  alt="Profile Picture"
/>

import Image from 'next/image';
Image
  src="/profile-picture.jpg"
  width="400"
  height="400"
  alt="Profile Picture"
/>;

تیم Google Chrome به ایجاد این مؤلفه React برای بهبود عملکرد صفحه با ایجاد بهترین روش‌های پیش‌فرض کمک کرد.

هنگام استفاده next/image کامپوننت، تصاویر به طور خودکار لود می شوند، به این معنی که آنها فقط زمانی ارائه می شوند که کاربر نزدیک به دیدن تصویر باشد. این از بارگیری آن 30 درصد از تصاویر خارج از نمای اصلی جلوگیری می کند.

ابعاد تصویر اعمال می‌شوند و به مرورگرها این امکان را می‌دهند که بلافاصله فضای مورد نیاز برای تصویر را به‌جای اینکه باعث پرش آن روی بار شوند، ارائه دهند و از تغییر طرح‌بندی جلوگیری کنند.

در حالی که width و height از HTML عنصر ممکن است در طرح‌بندی‌های پاسخگو مشکلاتی ایجاد کند، این مورد در استفاده نیست next/image. هنگام استفاده next/image تصویر به طور خودکار بر اساس نسبت های ارائه شده تطبیقی می شود width و height.

توسعه‌دهندگان می‌توانند تصاویری را که در نمای اولیه هستند علامت‌گذاری کنند و به Next.js این امکان را می‌دهند که به‌طور خودکار آن تصاویر را بارگذاری کند. بارگذاری پیش‌فرض تصاویر در نمای اولیه، بزرگترین پیشرفت‌های رنگ محتوای محتوایی را تا 50% نشان می‌دهد.

لینک را به عنوان کپی کنیدبهینه سازی خودکار تصویر

حتی با این پیشرفت ها نسبت به HTML عنصر، هنوز یک مشکل بزرگ وجود دارد. تصویر 2000 در 2000 پیکسل برای گوشی هایی ارسال می شود که تصویر کوچکتری را نمایش می دهند.

با Next.js 10، به این مشکل نیز می پردازیم. را next/image جزء به طور خودکار اندازه های کوچکتر را از طریق بهینه سازی تصویر داخلی ایجاد می کند.

بهینه‌سازی تصویر داخلی به‌طور خودکار تصاویر را در قالب‌های گرافیکی مدرن مانند WebP ارائه می‌کند که در صورت پشتیبانی مرورگر، حدود 30 درصد کوچک‌تر از JPEG است. همچنین امکان پذیرش خودکار Next.js را فراهم می کند آینده فرمت های گرافیکی را در اختیار مرورگرهایی قرار می دهد که از آن فرمت ها پشتیبانی می کنند.

بهینه سازی تصویر با هر منبع تصویری کار می کند. حتی اگر تصاویر از یک منبع داده خارجی مانند CMS آمده باشند، بهینه شده اند.

به جای بهینه سازی تصاویر در زمان ساخت، Next.js 10 تصاویر را بر اساس درخواست کاربران بهینه می کند. برخلاف مولدهای سایت ایستا و راه حل های فقط استاتیک، چه 10 تصویر ارسال کنید چه 10 میلیون تصویر، زمان ساخت شما افزایش نمی یابد.

لینک را به عنوان کپی کنیدنتیجه گیری

جدید next/image کامپوننت و بهینه سازی خودکار تصویر، ابزارهای اولیه قدرتمند جدیدی هستند که تجربه کاربر را به طور گسترده ای بهبود می بخشند.

را next/image کامپوننت بارگذاری خودکار به تعویق افتاده، بارگذاری اولیه تصویر مهم، اندازه صحیح دستگاه را کنترل می کند و به طور خودکار از فرمت های مدرن پشتیبانی می کند. این توابع با تصاویر از هر منبعی کار می کنند.

ما مشتاقانه منتظریم تا ببینیم تجربه کاربری شما با این موارد اولیه جدید چقدر سریعتر خواهد شد.

برای جزئیات بیشتر، مؤلفه تصویر Next.js و مستندات بهینه سازی خودکار تصویر را ببینید.

امسال، چندین کسب و کار و اعضای جامعه به تیم ما کمک کردند تا بفهمند بین المللی شدن چقدر مهم است.

به عنوان مثال، ما متوجه شدیم که 72٪ از کاربران در صورت ترجمه سایت شما احتمال بیشتری برای ماندن در سایت شما دارند و 55٪ از کاربران گفتند که فقط از سایت های تجارت الکترونیک به زبان مادری خود خرید می کنند.

اگر قصد دارید در کشور دیگری بازاریابی کنید، بین المللی کردن پروژه شما برای موفقیت بسیار مهم است.

بین المللی کردن یک پروژه دو رکن اصلی دارد: ترجمه و مسیریابی.

بسیاری از کتابخانه‌های React برنامه‌هایی را برای ترجمه آماده می‌کنند، اما بیشتر آنها از شما انتظار دارند که مسیریابی را به صورت دستی مدیریت کنید و معمولاً تنها با یک استراتژی رندر کار می‌کنند.

به همین دلیل است که به عنوان بخشی از Next.js 10، پشتیبانی داخلی را برای شناسایی بین المللی مسیریابی و زبان منتشر می کنیم.

این پشتیبانی داخلی برای مسیریابی بین المللی از استراتژی ترکیبی Next.js پشتیبانی می کند، بنابراین می توانید بین تولید استاتیک یا رندر سمت سرور برای هر صفحه یکی را انتخاب کنید.

Next.js 10 از دو استراتژی مسیریابی رایج پشتیبانی می کند: مسیریابی زیر مسیر و مسیریابی دامنه.

برای هر دو استراتژی، با پیکربندی مناطق در پیکربندی Next.js شروع می‌کنید.

module.exports = {
  i18n: {
    locales: ['en', 'nl'],
    defaultLocale: 'en',
  },
};

لوکال ها شناسه های محلی UTS هستند، یک قالب استاندارد شده برای تعریف مناطق.

به طور معمول، یک شناسه محلی شامل یک زبان، منطقه و اسکریپت است که با خط فاصله از هم جدا شده اند: language-region-script. منطقه و اسکریپت اختیاری هستند. مثال:

  • en-US – انگلیسی همانطور که در ایالات متحده صحبت می شود
  • nl-NL – هلندی، همانطور که در هلند صحبت می شود
  • nl – هلندی، هیچ منطقه ای مشخص نشده است

پس از پیکربندی مناطق شما، می‌توانید مسیر فرعی یا مسیریابی دامنه را انتخاب کنید.

لینک را به عنوان کپی کنیدمسیریابی زیر مسیر

مسیریابی Subpath، محلی را در URL قرار می دهد. این اجازه می دهد تا همه زبان ها در یک دامنه زندگی کنند.

به عنوان مثال، می توانید محلی را به عنوان در آدرس اینترنتی وارد کنید /nl-nl/blog و /en/blog.

لینک را به عنوان کپی کنیدمسیریابی دامنه

مسیریابی دامنه به شما امکان می دهد یک منطقه را به یک دامنه سطح بالا نگاشت کنید. به عنوان مثال example.nl می تواند اعمال شود nl محلی و example.com می تواند اعمال شود en مکان

مسیریابی دامنه به پیکربندی اضافی نیاز دارد تا نحوه مسیریابی دامنه ها را بدانید:

module.exports = {
  i18n: {
    locales: ['en', 'nl'],
    domains: [
      {
        domain: 'example.com',
        defaultLocale: 'en',
      },
      {
        domain: 'example.nl',
        defaultLocale: 'nl',
      },
    ],
  },
};

لینک را به عنوان کپی کنیدکشف زبان

Next.js 10 دارای تشخیص زبان داخلی است / مسیر بر اساس Accept-Language هدری که همه مرورگرهای مدرن از آن پشتیبانی می کنند. محلی های پیکربندی شده مطابقت خواهند داشت Accept-Language هدر و سپس مطابق با استراتژی پیکربندی شده تغییر مسیر دهید.

لینک را به عنوان کپی کنیدبهینه سازی موتور جستجو

از آنجایی که Next.js زبان صفحه بازدید شده توسط کاربر را می داند، به طور خودکار ویژگی lang را به آن اضافه می کند tag.

Next.js doesn’t know about variants of a page so it’s up to you to add the hreflang با استفاده از متا تگ ها next/head. می توانید در مورد آن بیشتر بدانید hreflang در اسناد Google Webmasters.

لینک را به عنوان کپی کنیدآینده بین المللی سازی در Next.js

مسیریابی بین المللی اولین مورد از یک سری ویژگی است که بین المللی کردن و بومی سازی پروژه شما را آسان تر می کند. مسیریابی بین المللی امکان ادغام با اکثر کتابخانه های بین المللی React را فراهم می کند.

برای کسب اطلاعات بیشتر در مورد مسیریابی بین المللی، به مستندات مسیریابی بین المللی مراجعه کنید.

در Vercel، ما می دانیم که شما نمی توانید چیزی را که نمی توانید اندازه گیری کنید، اصلاح کنید.

بازدیدکنندگان شما به طور فزاینده ای نسبت به عملکرد سایت حساس می شوند. بیش از 50 درصد از آنها اگر بیش از 3 ثانیه طول بکشد، وب سایت شما را رها می کنند. اگر در تجارت الکترونیک هستید، بسیاری متوجه شده اند که بهبود زمان بارگذاری به میزان 1/10 ثانیه منجر به افزایش 1 درصدی در تبدیل شده است.

از آنجا که عملکرد برای موفقیت شما بسیار مهم است، ما مفتخریم که Next.js Speed Insights را منتشر می کنیم. راه حلی برای ردیابی معیارهای عملکرد در دنیای واقعی و بازگرداندن آن بینش ها به گردش کار توسعه شما.

با Next.js Speed Insights:

به جای یک بار اندازه گیری، اکنون به طور مداوم اندازه گیری خواهید کرد.

به جای اندازه گیری در دستگاه توسعه خود، اندازه‌گیری‌ها از دستگاه‌های واقعی که بازدیدکنندگان شما استفاده می‌کنند انجام می‌شود.

Next.js Speed Insights در مورد تمرکز بر روی کل تصویر، درک عمیق مخاطبان و نحوه عملکرد برنامه شما برای کاربران است.

ما در مورد جمع آوری داده های واقعی بسیار مصمم هستیم زیرا دلایل عملکرد ضعیف همیشه واضح ترین نیستند. رگرسیون عملکرد می‌تواند از مکان‌های مختلفی ناشی شود – اسکریپت‌ها و شیوه نامه‌های شخص ثالث، یا فونت‌ها، تصاویر و ویدیوهای شخص اول که خیلی بزرگ یا کند هستند.

لینک را به عنوان کپی کنیدمعیارهای اساسی وب

گوگل، در ارتباط با گروه کاری عملکرد وب، مجموعه‌ای از معیارها را برای اندازه‌گیری اینکه کاربران دقیقاً چگونه عملکرد وب‌سایت شما را تجربه می‌کنند، ایجاد کرده‌اند: به درستی Web Vitals نامیده می‌شود. Web Vitals معیارهایی هستند که سرعت بارگذاری درک شده، پاسخگویی و ثبات بصری وب سایت شما را ردیابی می کنند – که هر سه برای سلامت کلی وب سایت ضروری هستند!

سرعت بارگذاری درک شده را می توان با بزرگترین رنگ محتوایی یا زمانی که تمام محتوای صفحه نمایش داده می شود اندازه گیری کرد. به عنوان مثال، زمانی که من پیوندی را برای خرید یک جفت کفش ورزشی باز می کنم – مدت زمانی که می گذرد قبل از دیدن کفش های کتانی خود، قیمت آنها و دکمه افزودن به سبد خرید LCP است.

پاسخگویی یک صفحه را می‌توان با تأخیر بارگذاری اول اندازه‌گیری کرد، که اندازه‌گیری مدت زمانی است که کاربران شما در اولین تعامل با صفحه برای دیدن پاسخ باید منتظر بمانند. به عنوان مثال، فاصله زمانی بین کلیک کردن من روی افزودن به سبد خرید و افزایش تعداد اقلام در سبد خرید، FID است.

در نهایت، پایداری بصری را می‌توان با جابجایی طرح‌بندی تجمعی یا میزان حرکت عناصر پس از نمایش به کاربر اندازه‌گیری کرد. به عنوان مثال، همه ما از تلاش برای ضربه زدن روی دکمه ای که به دلیل دیر بارگیری تصویر جابجا شده است، احساس ناامیدی را تجربه کرده ایم – این تغییر مکان است.

اندازه گیری و هم ترازی مداوم حول این Web Vitals برای کاربران واقعی شما بسیار مهم است. این تنها راهی است که می توانید به طور واقعی از عملکرد سایت شما برای کاربران خود مطلع شوید. عملکرد سایت شما بسته به دستگاه کاربر و شرایط شبکه آنها یا نحوه تعامل آنها با صفحه می تواند به طور چشمگیری متفاوت باشد. سایت هایی که محتوای سفارشی یا تبلیغات را بارگیری می کنند نیز می توانند عملکرد بسیار متفاوتی از کاربر به کاربر داشته باشند.

یک تست شبیه سازی شده نمی تواند این سیگنال های مهم را دریافت کند.

Next.js Speed Insights به شما امکان می دهد به جای معیارهای مصنوعی، بینش های دنیای واقعی را ثبت کنید. به جای تکیه بر آزمایش‌های تصادفی، امکان جریان مداوم اندازه‌گیری‌ها را فراهم می‌کند و مطمئن می‌شود که بخشی از گردش کار توسعه‌دهنده شما است.

Next.js Speed Insights به شما امکان می دهد عکس بگیرید بینش دنیای واقعی، به جای معیارهای مصنوعی. اجازه می دهد تا a جریان پیوسته اندازه گیری به جای تکیه بر آزمون های تصادفی، اطمینان حاصل کنید که بخشی از گردش کار توسعه دهنده شما است.

از nextjs.org/analytics دیدن کنید تا یاد بگیرید که چگونه آن را در برنامه خود فعال کنید.

تجارت الکترونیک یکی از مهمترین کاربردهای وب است. ویژگی های جدید Next.js 10 ابزارهای جدید قدرتمندی برای تجارت الکترونیک هستند.

به همین دلیل است که امروز با همکاری BigCommerce، Next.js Commerce را منتشر کردیم که یک کیت شروع همه کاره React برای سایت‌های تجارت الکترونیک است. با چند کلیک، توسعه‌دهندگان Next.js می‌توانند آن را شبیه‌سازی کنند، مستقر کنند و کاملاً سفارشی کنند. اکنون در nextjs.org/commerce شروع کنید.

React 17 هیچ تغییری برای Next.js نداشت، اما برخی تغییرات تعمیر و نگهداری مانند به‌روزرسانی وابستگی‌های همتا مورد نیاز بود. تبدیل جدید JSX هنگام استفاده از React 17 به طور خودکار فعال می شود، هیچ تغییری در پیکربندی لازم نیست.

تنها کاری که برای شروع استفاده از React 17 باید انجام دهید این است که Next.js و React را ارتقا دهید:

npm install next@latest react@latest react-dom@latest

لینک را به عنوان کپی کنیدgetStaticProps / getServerSideProps تازه کردن سریع

هنگامی که شما ویرایش هایی را در خود انجام می دهید getStaticProps و getServerSideProps functions Next.js اکنون به طور خودکار عملکرد را مجدداً اجرا می کند و داده های جدید را اعمال می کند. این به شما امکان می دهد بدون نیاز به رفرش صفحه، سریعتر تکرار کنید.

برای کسب اطلاعات بیشتر در مورد getStaticProps و getServerSideProps می توانید اسناد استخراج داده ها را بخوانید.

هنگام استفاده از Next.js با MDX از طریق @next/mdx تغییر محتوای MDX اکنون از Fast Refresh استفاده می‌کند و اطمینان حاصل می‌کند که مرورگر مجبور نیست صفحه را در ویرایش‌ها دوباره بارگیری کند.

را @next/mdx اسناد شما را با نحوه راه اندازی MDX با Next.js راهنمایی می کند.

لینک را به عنوان کپی کنیدCSS را از اجزای React شخص ثالث وارد کنید

اکنون می توانید css شخص ثالث را در اجزای React وارد کنید. این به CSS اجازه می دهد تا کدهای در نظر گرفته شده برای تنها یک جزء را جدا کند. به عنوان مثال، اکنون می توانید استفاده کنید react-datepicker کتابخانه بدون نیاز به وارد کردن CSS _app.js:

components/MyComponent.js
import DatePicker from 'react-datepicker';
import 'react-datepicker/dist/react-datepicker.css';
 
function MyComponent() {}

برای کسب اطلاعات بیشتر در مورد نحوه مدیریت Next.js وارد کردن CSS، می توانید به اسناد پشتیبانی داخلی CSS مراجعه کنید.

اگر قبلاً از مسیرهای پویا استفاده کرده اید، احتمالاً قبلاً با موردی برخورد کرده اید که باید هر دو را ارائه دهید href و as دارایی به next/link. چیزی شبیه به این خواهد بود:

Link href="/categories/[slug]" as="/categories/books" />

این به Next.js اجازه داد تا href را برای پارامترهای پویا درون‌یابی کند، اما زمانی که توسعه‌دهندگان فراموش کردند اضافه کنند، باعث ایجاد اصطکاک شد. as یا اضافه کردم as ج href که باعث می شود انتقال صفحه از مسیریابی سمت مشتری استفاده نکند.

ما چند ماه پیش تصمیم گرفتیم این اصطکاک را برای توسعه دهندگان حل کنیم، با هدف اصلی بهبود تجربه توسعه دهنده و کاربر نهایی. ما به صورت تدریجی به سمت راه حلی کار می کنیم که اجازه می دهد href برای حل خودکار

ما خوشحالیم که اعلام کنیم به عنوان بخشی از Next.js 10، دیگر نیازی به استفاده از آن ندارید as دارایی برای اکثر موارد استفاده حذف اصطکاک از توسعه دهندگان و بهبود تجربه کاربر نهایی.

اگر در حال حاضر از هر دو استفاده می کنید، این تغییر کاملاً با عقب سازگار است href و as رفتار موجود حفظ می شود.

برای پذیرش خودکار href تنها کاری که باید انجام دهید این است که استفاده خود را تغییر دهید next/link فقط برای استفاده href داشتن ارزشی که قبلا داشتی as دارایی

Link href="/categories/books" />

برای کسب اطلاعات بیشتر در مورد next/link و مسیریابی سمت مشتری، می توانید به آن مراجعه کنید next/link مستندات

ما متعهد هستیم که ارتقاء Next.js را تا حد امکان روان و از طریق سازگاری گسترده با عقب انجام دهیم. این تعهد با کنار گذاشتن بسیار کم ویژگی ها و در عین حال معرفی راه حل های جدید و بهتر در جای خود شروع می شود. علاوه بر این تعهد، ما تست‌های یکپارچه‌سازی گسترده‌ای برای همه ویژگی‌های Next.js داریم، از جمله آزمایش‌هایی که توسعه محلی را تکرار می‌کنند.

هنگامی که یک ویژگی در Next.js منسوخ می شود و نیاز به تغییرات اساسی در پایگاه کد دارد، تیم ما یک کد مد برای آن ایجاد می کند. Codemod یک تبدیل کد خودکار است که می توانید در پروژه خود برای به روز رسانی کد منبع اجرا کنید.

به عنوان مثال: ما یک کد مد برای به روز رسانی توابع پیکان و توابع ناشناس به توابع نامگذاری شده منتشر کردیم. این تبدیل ضروری است زیرا در غیر این صورت React Fast Refresh عملکرد را به عنوان یک مؤلفه معتبر React شناسایی نمی کند. به همین ترتیب، قوانین قلاب React Eslint تابع را به عنوان یک جزء React نمی گیرند.

با Next.js 10، یک ابزار CLI جدید به نام Next.js Codemods را منتشر می کنیم که به شما امکان می دهد یک فرمان را برای به روز رسانی برنامه خود اجرا کنید: npx @next/codemod .

برای کسب اطلاعات بیشتر در مورد Codemods، می توانید اسناد Next.js Codemods را بررسی کنید.

در Next.js 9.3 را معرفی کردیم getStaticProps و getStaticPaths همراه با قابلیت بازگشت الف fallback ملک در getStaticPaths. را fallback ویژگی اجازه می دهد تا صفحات استاتیک اضافی بدون نیاز به بازسازی کامل با ارائه در ابتدا یک فایل HTML ایستا ایجاد شود که سپس در درخواست های بعدی با محتوای کاملاً رندر شده جایگزین می شود. در چند ماه گذشته، بازخوردهای زیادی از شرکت‌هایی دریافت کرده‌ایم که رفتاری مشابه اما کمی متفاوت می‌خواستند: مسدود کردن پیش‌رندر زمانی که کاربر برای اولین بار صفحه را درخواست می‌کند. پس از این رندر اولیه، صفحه برای درخواست های بعدی مجددا استفاده خواهد شد.

با Next.js 10 این مورد را حل می کنیم.

ما هیجان زده هستیم که جدید را اعلام کنیم fallback: 'blocking' حالت برای getStaticPaths که امکان مسدود کردن رفتار را فراهم می کند که در آن هیچ بازگشتی ثابت به مرورگر ارسال نمی شود. در عوض، درخواست اولیه برای پیش‌رندر منتظر می‌ماند.

export function getStaticPaths() {
  return {
    // enables blocking mode for the fallback behavior
    fallback: 'blocking',
  };
}

برای کسب اطلاعات بیشتر در مورد fallback رفتار برای تولید تدریجی صفحات استاتیک اضافی، می توانید به آن مراجعه کنید fallback مستندات

لینک را به عنوان کپی کنیدRedirection and NotFound Support for getStaticProps / getServerSideProps

از زمان معرفی getStaticProps و getServerSideProps ما مواردی را مشاهده کرده‌ایم که در آن کاربران باید تغییر مسیرها و 404 پاسخ را برگردانند. برای کمک به ساده‌سازی این موارد، اکنون اجازه می‌دهیم دو فیلد جدید از آن بازگردانده شوند getStaticProps و getServerSideProps: notFound و redirect.

لینک را به عنوان کپی کنیدnotFound نگهداری

هنگام برگرداندن notFound میدان با true صفحه پیش‌فرض 404 با کد وضعیت بازگردانده می‌شود 404. این به شما امکان می دهد از ایجاد صفحات اضافی با SSG جلوگیری کنید و مجبور به انجام رندر دستی صفحه 404 شوید.

export function getStaticProps() {
  return {
    // returns the default 404 page with a status code of 404
    notFound: true,
  };
}

لینک را به عنوان کپی کنیدredirect نگهداری

ریدایرکت هایی که حاوی هستند اکنون می توانند برگردانده شوند destination و اینکه آیا تغییر مسیر باید دائمی باشد یا خیر، به عنوان مثال. permanent: true. به میل خود statusCode را نیز می توان به محل بازگرداند permanent فیلد برای زمانی که باید از یک وضعیت خاص در تنظیمات پیش فرض استفاده کنید.

export function getStaticProps() {
  return {
    // returns a redirect to an internal page `/another-page`
    redirect: {
      destination: '/another-page',
      permanent: false,
    },
  };
}
export function getServerSideProps() {
  return {
    // returns a redirect to an external domain `example.com`
    redirect: {
      destination: 'https://example.com',
      permanent: false,
    },
  };
}

ما از دیدن ادامه رشد در پذیرش Next.js هیجان‌زده هستیم:

  • خرج کردیم 1300 مشارکت کنندگان مستقل، با بیش از 120 مشارکت کنندگان جدید پس از انتشار 9.5
  • این پروژه در GitHub ستاره دار است 54800 بارها

به انجمن Next.js در بحث های GitHub بپیوندید. Discussions یک فضای اجتماعی است که به شما امکان می دهد با سایر کاربران Next.js ارتباط برقرار کنید و آزادانه سؤال بپرسید یا کار خود را به اشتراک بگذارید.

لینک را به عنوان کپی کنیدوام

ما از جامعه خود، از جمله همه بازخوردها و مشارکت‌های خارجی که به شکل‌گیری این نسخه کمک کردند، سپاسگزاریم.

این نسخه توسط مشارکت‌های زیر برای شما آورده شده است: @ijjk، @adebiyial، @elliottsj، @saintmalik، @HaNdTriX، @prateekbh، @amirsaeed671، @paambaati، @imagentleman، @gregrickaby، @Janpot، @attcastle، @,Kirkmorshamz@ @slawekkolodziej، @Timer، @styfle، @timneutkens، @ykzts @ashconnell @lunchboxav، @mohsen1، @akd-io، @justman00، @helloworld، @devknoll، @borekb، @ArthurMaverick، @sakitoSheden، @Takito21، @Taqito21، @Taqito21 @hallaji، @kettanaito، @vvo، @m-lautenbach، @jensmeindertsma، @Zeko369، @longlho، @stefanprobst، @laugharn، @sdornan، @daneroo، @mohd-akram، @austingmhuang، @sphilee، @ba,toing، @devineka @leader22، @paulogdm، @284km، @belgattitude، @geritol، @stigkj، @sampoder، @samrobbins85، @Pitasi، @digitalPlayer1125، @timfee، @plug-n-play، @philihp، @leerob، @rdumen، @Kywelan @zerbinidamata، @jamesgeorge007، @Jashnm و @futantan!


Source link

نوشته های مشابه

دیدگاهتان را بنویسید

دکمه بازگشت به بالا