~3 دقیقه مطالعه • بروزرسانی ۳ آبان ۱۴۰۴
مقدمه
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.png - Open Graph:
opengraph-image.pngیاopengraph-image.tsx - Twitter:
twitter-image.pngیاtwitter-image.tsx - SEO:
sitemap.xml،robots.txt
سلسلهمراتب کامپوننتها
فایلهای خاص در ترتیب مشخصی رندر میشوند:
layout.tsxtemplate.tsxerror.tsxloading.tsxnot-found.tsxpage.tsx
این کامپوننتها بهصورت تو در تو رندر میشوند و مسیرهای فرزند را در مسیرهای والد قرار میدهند.
بهترین روشهای سازماندهی فایلها
فایلها را میتوان درون پوشههای مسیر قرار داد بدون اینکه قابل دسترسی عمومی شوند، مگر اینکه فایل page.tsx یا route.ts وجود داشته باشد. این روش امکان نگهداری کامپوننتها، ابزارها و استایلها در نزدیکی محل استفاده را فراهم میکند.
جمعبندی
Next.js ساختاری منعطف و قدرتمند برای سازماندهی پروژهها ارائه میدهد. با رعایت کنوانسیونهای پوشهها و فایلها، میتوان اپلیکیشنهایی مقیاسپذیر، قابل نگهداری و با تجربه توسعهدهنده بهینه ساخت.
نوشته و پژوهش شده توسط دکتر شاهین صیامی