Next.js یک سیستم مسیریابی قدرتمند و انعطافپذیر مبتنی بر فایل ارائه میدهد. اگرچه ساختار پروژه اجباری نیست، اما با رعایت کنوانسیونهای پیشنهادی میتوان پروژهای منظم و قابل توسعه ساخت. در این مقاله، ساختار پوشهها، فایلها و روشهای سازماندهی در پروژههای Next.js را بررسی میکنیم.
app/ – مسیرها با استفاده از App Routerpages/ – مسیرهای قدیمی با Pages Routerpublic/ – فایلهای استاتیک مانند تصاویر و فونتهاsrc/ – پوشه اختیاری برای کدهای منبع اپلیکیشنnext.config.js – تنظیمات Next.jspackage.json – وابستگیها و اسکریپتهای پروژه.env و نسخههای محلی و تولیدی آن – متغیرهای محیطیtsconfig.json / jsconfig.json – تنظیمات TypeScript یا JavaScripteslint.config.mjs – تنظیمات ESLintproxy.ts و instrumentation.ts – ابزارهای اختیاری برای پراکسی و مانیتورینگهر پوشه مسیر خاصی را تعریف میکند. برای عمومی شدن مسیر، باید فایل page.tsx یا route.ts در آن پوشه وجود داشته باشد:
layout.tsx – رابط مشترک مانند هدر یا فوترpage.tsx – محتوای اصلی مسیرloading.tsx – رابط بارگذاری اولیهerror.tsx – مدیریت خطاnot-found.tsx – صفحه ۴۰۴route.ts – مسیرهای APItemplate.tsx – لایههای قابل بازسازیپوشهها مسیرهای URL را تعریف میکنند. تو در تو بودن پوشهها باعث تو در تو شدن مسیرها میشود:
app/layout.tsx → لایه ریشه برای همه مسیرها
app/blog/layout.tsx → لایه برای /blog و زیرمجموعهها
app/blog/page.tsx → مسیر /blog
app/blog/authors/page.tsx → مسیر /blog/authors[slug] – پارامتر تکی (مثلاً /blog/my-post)[...slug] – دریافت همه بخشها (مثلاً /shop/clothing/shirts)[[...slug]] – دریافت اختیاری همه بخشها (مثلاً /docs یا /docs/intro)(group) – گروهبندی منطقی بدون تأثیر در URL_folder – پوشههای خصوصی برای نگهداری فایلهای غیر قابل مسیریابیبرای پیادهسازی رابطهای پیچیده مانند لایههای slot یا مودالها:
@folder – slot نامگذاریشده(.)folder – رهگیری مسیر همسطح(..)folder – رهگیری مسیر والد(...) – رهگیری از ریشهfavicon.ico، icon.png، apple-icon.pngopengraph-image.png یا opengraph-image.tsxtwitter-image.png یا twitter-image.tsxsitemap.xml، robots.txtفایلهای خاص در ترتیب مشخصی رندر میشوند:
layout.tsxtemplate.tsxerror.tsxloading.tsxnot-found.tsxpage.tsxاین کامپوننتها بهصورت تو در تو رندر میشوند و مسیرهای فرزند را در مسیرهای والد قرار میدهند.
فایلها را میتوان درون پوشههای مسیر قرار داد بدون اینکه قابل دسترسی عمومی شوند، مگر اینکه فایل page.tsx یا route.ts وجود داشته باشد. این روش امکان نگهداری کامپوننتها، ابزارها و استایلها در نزدیکی محل استفاده را فراهم میکند.
Next.js ساختاری منعطف و قدرتمند برای سازماندهی پروژهها ارائه میدهد. با رعایت کنوانسیونهای پوشهها و فایلها، میتوان اپلیکیشنهایی مقیاسپذیر، قابل نگهداری و با تجربه توسعهدهنده بهینه ساخت.