مقالات

Next.js در سراسر پلتفرم ها: آداپتورها، OpenNext و تعهدات ما


Next.js 16.2 یک API آداپتور قوی را معرفی کرد که با همکاری OpenNext، Netlify، Cloudflare، AWS Amplify و Google Cloud ساخته شده است. این پست توضیح می‌دهد که چگونه این اتفاق افتاد و تعهداتی که ما برای اطمینان از اینکه Next.js در هر پلتفرمی به خوبی کار می‌کند، می‌گیریم:

  • Adapter API (پایدار): شرحی تایپ شده و نسخه‌ای از برنامه شما که هر پلتفرمی می‌تواند آن را هدف قرار دهد.
  • بسته آزمایشی: تست های صحت مشترک برای هر آداپتور، از جمله Vercel.
  • آداپتورهای تایید شده: آداپتورهای منبع باز متعلق به جامعه که تحت سازمان Next.js میزبانی می شوند.
  • کارگروه اکوسیستم: یک انجمن دائمی برای هماهنگی تغییرات بین فروشندگان.

بسیاری از برنامه های Next.js به عنوان یک سرور Node.js در حال اجرا مستقر می شوند next start. امروزه صدها هزار تیم در هر تعداد پلتفرم بدون محدودیت این کار را انجام می دهند.

اما مقیاس‌گذاری برنامه‌ها معمولاً شامل اجرای چندین نمونه سرور است. وقتی این کار را انجام می‌دهید، برخی چیزها باید به درستی کار کنند: محتوای ذخیره‌شده باید بین نمونه‌ها همگام باشد، تأیید مجدد درخواستی باید منتشر شود، و پخش باید قابل اعتماد کار کند. اینها الزامات عملکردی هستند، نه بهینه سازی.

سپس گزینه‌های عملکردی هستند که انتخاب می‌کنید: ارائه محتوای ذخیره‌شده از یک CDN جهانی، اجرای محاسبات در لبه، بهینه‌سازی چکمه‌های سرد با ویژگی‌های بدون سرور. هر یک از اینها پیچیدگی معماری را به آنچه قبلاً باید درست باشد اضافه می کند.

بسته به پلتفرم و معماری، سطح کامل اضافه می‌شود: جریان، اجزای سرور، پیش‌اجرای جزئی، میان‌افزار، مؤلفه‌های کش، اعتبارسنجی مجدد در صورت تقاضا. هر احتمال و نحوه تعامل آنها با یکدیگر هرگز به طور رسمی مستند نشده است. برای فروشندگان پلتفرم که به دنبال حفظ وفاداری Next.js در یک محیط چند مستاجر در نسخه های در حال تکامل هستند، این چالش ها ترکیب شده اند:

هنگامی که تیم Next.js با پیشنهادی برای بحث در مورد چالش‌های Netlify تماس گرفت، ما شروع به جمع‌آوری لیست کاملی از مسائل خاص برای اشتراک‌گذاری کردیم، اما به سرعت مشخص شد که موضوع مشترک بین 90٪ آنها صرفاً نداشتن مکانیزم مستند و قوی برای پیکربندی و خواندن خروجی ساخت بود. این چیزی است که ما بیش از هر چیز به آن نیاز داشتیم. پس این چیزی بود که به جیمی گفتیم و خوشحالیم که انجام دادیم.

– فیلیپ سرهال، مهندس نتلیفای

قطعه گم شده بود بالادست، پایدار، قرارداد عمومی که تامین کنندگان می توانند در مقابل آن بسازند.

OpenNext این شکاف را پر کرد. این خروجی ساخت Next.js را به چیزی تبدیل کرد که ارائه‌دهندگان می‌توانستند آن را مصرف کنند و معنای فریم‌ورک را برای اولیه‌های هر ارائه‌دهنده اعمال می‌کرد. چیزی که به عنوان یک لایه سازگاری شروع شد به آن تبدیل شده است آداپتور درجه تولید اولیهبه خصوص در AWS، با Cloudflare و Netlify که بعداً به این تلاش می‌پیوندند. OpenNext نشان داده است که خروجی ساخت Next.js می تواند به عنوان یک رابط قوی و تعریف شده عمل کند که آداپتورها مستقیماً به آن اشاره می کنند.

این بینش منجر به همکاری گسترده‌تر بین تیم Next.js و حامیان OpenNext، همراه با مهندسان Netlify، Cloudflare، AWS Amplify و Google Cloud شد. ما یک RFC برای ساخت آداپتورها در آوریل 2025 منتشر کردیم، یک گروه کاری تشکیل دادیم و از آن زمان با این شرکا برای طراحی، آزمایش و اعتبار سنجی API کار می کنیم.

Next.js 16.2 با یک API آداپتور عمومی قوی عرضه می شود.

پس از کامپایل، Next.js قبلاً یک توضیح تایپ شده با نسخه های برنامه شما ایجاد می کند: مسیرها، پیش اجراها، دارایی های ثابت، اهداف زمان اجرا، وابستگی ها، قوانین کش و تصمیمات مسیریابی. آداپتور از این خروجی استفاده می کند و آن را به زیرساخت ارائه دهنده نگاشت می کند.

آداپتورها دو قلاب را انجام می دهند: modifyConfig (زمانی که پیکربندی بارگذاری می شود) و onBuildComplete (زمانی که خروجی کامل در دسترس باشد). تغییرات مهم نیاز به نسخه اصلی جدید Next.js دارد.

آداپتور Vercel از همان قرارداد عمومی، بدون قلاب خصوصی یا مسیر یکپارچه سازی اختصاصی استفاده می کند. متن باز است.

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

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

می توانید در مستندات آزمایش آداپتور بیشتر بخوانید.

نویسندگان آداپتور می توانند بسته را با استفاده از هر آداپتوری اجرا کنند و برای هر تابع یک پاسخ عبور/عیب دریافت کنند. این همان مجموعه آزمایشی است که Vercel برای آداپتور خود استفاده می‌کند، بنابراین نوار صحت توسط همه فروشندگان به اشتراک گذاشته می‌شود.

برای تبدیل شدن به یک آداپتور بررسی شده (که تحت سازمان Next.js GitHub میزبانی شده و در اسناد استقرار پلتفرم ذکر شده است)، دو چیز مورد نیاز است: باید منبع باز باشد و مجموعه آزمایشی کامل را پشت سر بگذارد. با ایجاد منبع باز آداپتور، اطمینان حاصل می کند که مکانی برای پشتیبانی از آداپتور وجود دارد تا مشکلات گزارش و رفع شوند. مجموعه آزمایشی اطمینان می دهد که سازگاری آداپتور با Next.js قابل اندازه گیری است.

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

فروشندگان همچنین می توانند آداپتورهای منبع بسته را به همان API عمومی ایجاد و ارسال کنند.

Public Adapters API امروز با:

  • آداپتور Vercel: منبع باز، خروجی Next.js را به زیرساخت بدون سرور و CDN ورسل می‌رساند.
  • آداپتور bun: یک آداپتور مرجع که نشان می دهد چگونه یک هدف کامل برای استقرار Next.js در یک زمان اجرا جایگزین بسازید.

آداپتور برای Netlify، Cloudflare، و AWS از طریق OpenNext در حال توسعه فعال هستند و انتظار می رود اواخر امسال منتشر شوند.

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

– فرد K. Schott، مهندس Cloudflare

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

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

از شرکای ما بیشتر بخوانید:

همکاری بین OpenNext و تیم Next.js یک راه حل مبتنی بر جامعه را به یک استاندارد رسمی تبدیل می کند و ثابت می کند که آینده چارچوب های وب بر اساس باز بودن و نوآوری مشترک ساخته شده است.

– دورسی نیکلاس، OpenNext

با تشکر از اعضای گروه کاری Build Adapters: مهندسان Netlify، Cloudflare، Google Cloud، AWS Amplify و OpenNext که وقت خود را برای طراحی مشترک این API و اعتبارسنجی آن برای پلتفرم‌های خود صرف کردند. از همه کسانی که آداپتورها را ساختند، باگ‌ها را ثبت کردند و راه‌حل‌هایی ارائه کردند، تشکر می‌کنیم.

Next.js توسط میلیون ها توسعه دهنده استفاده می شود و بسیاری از آنها بر روی زیرساخت های غیر Vercel اجرا می شوند. آنها سزاوار همان سطح اطمینان و دسترسی یکسان به ویژگی های جدید هستند. API آداپتور موارد زیر را ارائه می‌کند: یک قرارداد مشترک که هر پلتفرمی می‌تواند بر اساس آن بسازد، با یک مجموعه آزمایشی عمومی که همه، از جمله ما، را با یک استاندارد نگه می‌دارد.

هر ویژگی جدیدی که ایجاد کنیم در قرارداد آداپتور ثبت خواهد شد. فرآیند RFC همچنان که API تکامل می‌یابد، با نویسندگان آداپتور هماهنگ می‌شود.


Source link

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

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

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