Next.js
مسیریاب app
برنامه تان را بسیازید
مسیریابی Routing
سازماندهی پروژه

سازماندهی پروژه و هم‌مکانی فایل‌ها

فراتر از قراردادهای پوشه و فایل مسیریابی، Next.js در مورد نحوه سازماندهی و هم‌مکانی فایل‌های پروژه شما هیچ نظری ندارد.

این صفحه رفتار پیش‌فرض و ویژگی‌هایی را به اشتراک می‌گذارد که می‌توانید برای سازماندهی پروژه خود از آن‌ها استفاده کنید.

هم‌مکانی ایمن به صورت پیش‌فرض

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

هر پوشه نشان‌دهنده یک بخش مسیر است که به بخش متناظر در مسیر URL نگاشت می‌شود.

با این حال، حتی اگر ساختار مسیر از طریق پوشه‌ها تعریف شود، تا زمانی که یک فایل page.js یا route.js به یک بخش مسیر اضافه نشود، یک مسیر قابل دسترسی عمومی نیست.


نموداری که نشان می‌دهد چگونه یک مسیر تا زمانی که فایل page.js یا route.js به یک بخش مسیر اضافه نشود، برای عموم قابل دسترسی نیست.نموداری که نشان می‌دهد چگونه یک مسیر تا زمانی که فایل page.js یا route.js به یک بخش مسیر اضافه نشود، برای عموم قابل دسترسی نیست.

و حتی زمانی که یک مسیر به صورت عمومی در دسترس قرار می‌گیرد، تنها محتوای برگشتی توسط page.js یا route.js به کلاینت ارسال می‌شود.


نموداری که نشان می‌دهد چگونه فایل‌های page.js و route.js مسیرها را در دسترس عموم قرار می‌دهند.نموداری که نشان می‌دهد چگونه فایل‌های page.js و route.js مسیرها را در دسترس عموم قرار می‌دهند.

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


نموداری که فایل‌های پروژه هم‌اکنون را نشان می‌دهد، حتی زمانی که یک بخش حاوی فایل page.js یا route.js باشد، قابل مسیریابی نیستند.نموداری که فایل‌های پروژه هم‌اکنون را نشان می‌دهد، حتی زمانی که یک بخش حاوی فایل page.js یا route.js باشد، قابل مسیریابی نیستند.

خوب است بدانید:

  • این مورد با پوشه pages متفاوت است، جایی که هر فایلی در pages یک مسیر در نظر گرفته می‌شود.
  • در حالی که می‌توانید فایل‌های پروژه خود را در app هم‌مکان کنید، اما مجبور نیستید این کار را انجام دهید. در صورت تمایل می‌توانید آن‌ها را خارج از پوشه app نگه دارید.

ویژگی‌های سازماندهی پروژه

Next.js چندین ویژگی برای کمک به شما در سازماندهی پروژه شما ارائه می‌دهد.

پوشه‌های خصوصی

پوشه‌های خصوصی را می‌توان با پیشوند یک زیرخط به نام پوشه ایجاد کرد: _folderName

این نشان می‌دهد که پوشه یک جزئیات پیاده‌سازی خصوصی است و نباید توسط سیستم مسیریابی در نظر گرفته شود، بنابراین پوشه و تمام زیرپوشه‌های آن را از مسیریابی خارج می‌کند.


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

از آنجایی که فایل‌ها در پوشه app به طور پیش فرض می‌توانند به طور ایمن هم‌مکان شوند، برای هم‌مکانی نیازی به پوشه‌های خصوصی نیست. با این حال، آن‌ها می‌توانند برای موارد زیر مفید باشند:

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

خوب است بدانید

  • در حالی که یک قرارداد چارچوب نیست، ممکن است بخواهید فایل‌های خارج از پوشه‌های خصوصی را نیز با استفاده از همین الگوی زیرخط به عنوان "خصوصی" علامت‌گذاری کنید.
  • شما می‌توانید بخش‌های URL را که با یک زیرخط شروع می‌شوند با پیشوند نام پوشه با %5F (شکل رمزگذاری شده URL یک زیرخط) ایجاد کنید: %5FfolderName.
  • If you don't use private folders, it would be helpful to know Next.js to prevent unexpected naming conflicts.
  • اگر از پوشه‌های خصوصی استفاده نمی‌کنید، دانستن قراردادهای فایل ویژه Next.js برای جلوگیری از تداخل‌های غیرمنتظره نام مفید است.

گروه‌های مسیر

گروه‌های مسیر را می‌توان با قرار دادن یک پوشه در پرانتز ایجاد کرد: (folderName)

این نشان می‌دهد که پوشه برای اهداف سازماندهی است و نباید در مسیر URL مسیر گنجانده شود.


نمونه ای از ساختار پوشه با استفاده از گروه های مسیرنمونه ای از ساختار پوشه با استفاده از گروه های مسیر

گروه‌های مسیر برای موارد زیر مفید هستند:

دایرکتوری src

Next.js از ذخیره کد برنامه (از جمله app) در یک پوشه اختیاری src directory پشتیبانی می‌کند. این کد برنامه را از فایل‌های پیکربندی پروژه که عمدتاً در ریشه پروژه قرار دارند جدا می‌کند.


یک نمونه ساختار پوشه با دایرکتوری `src`یک نمونه ساختار پوشه با دایرکتوری `src`

نام مستعار مسیر ماژول Module Path Aliases

Next.js از نام مستعار نام مستعار مسیر ماژول پشتیبانی می‌کند که خواندن و نگهداری importها در سراسر فایل‌های پروژه با تو در تو عمیق را آسان‌تر می‌کند.

app/dashboard/settings/analytics/page.js
// before
import { Button } from '../../../components/button'
 
// after
import { Button } from '@/components/button'

استراتژی‌های سازماندهی پروژه

هیچ راه "درست" یا "غلطی" برای سازماندهی فایل ها و پوشه های خود در یک پروژه Next.js وجود ندارد.

استراتژی‌های سازماندهی پروژه هیچ راه "درست" یا "غلطی" برای سازماندهی فایل ها و پوشه های خود در یک پروژه Next.js وجود ندارد.

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

خوب است بدانید: در نمونه های زیر، ما از پوشه های components و lib به عنوان جایگزین های عمومی استفاده می کنیم، نامگذاری آنها اهمیت خاصی در چارچوب ندارد و پروژه های شما ممکن است از پوشه های دیگری مانند ui، utils، hooks، styles و غیره استفاده کنند.

ذخیره فایل‌های پروژه خارج از app

این استراتژی تمام کد برنامه را در پوشه‌های مشترک در ریشه پروژه شما ذخیره می‌کند و پوشه app را صرفاً برای اهداف مسیریابی نگه می‌دارد.


نمونه ساختار پوشه با فایل های پروژه خارج از برنامهنمونه ساختار پوشه با فایل های پروژه خارج از برنامه

ذخیره فایل‌های پروژه در پوشه‌های سطح بالا درون app

این استراتژی تمام کد برنامه را در پوشه‌های مشترک در ریشه پوشه app ذخیره می‌کند.


نمونه ای از ساختار پوشه با فایل های پروژه در داخل برنامهنمونه ای از ساختار پوشه با فایل های پروژه در داخل برنامه

تقسیم فایل‌های پروژه بر اساس ویژگی یا مسیر

این استراتژی کد برنامه به اشتراک گذاشته شده جهانی را در پوشه ریشه app ذخیره می کند و کد برنامه خاص‌تر را به بخش‌های مسیری که از آنها استفاده می‌کنند تقسیم می‌کند.


یک نمونه ساختار پوشه با فایل های پروژه که بر اساس ویژگی یا مسیر تقسیم می شوندیک نمونه ساختار پوشه با فایل های پروژه که بر اساس ویژگی یا مسیر تقسیم می شوند