CodeShot

کلاس‌های Utility مستقیم در مقابل دایرکتیو @apply

در روش معمول Tailwind، کلاس‌های Utility مستقیماً در HTML/JSX نوشته می‌شوند و همه استایل در همان مارک‌آپ قابل مشاهده است، در حالی که @apply این امکان را می‌دهد چند کلاس Utility را در یک کلاس CSS سفارشی جدید ترکیب کنید تا از تکرار مکرر یک ترکیب طولانی از کلاس‌ها در چند جای مختلف جلوگیری شود.

ویژگیکلاس‌های Utility مستقیمدایرکتیو @apply
محل استایلمستقیم در مارک‌آپفایل CSS جداگانه
تکرار کدممکن است زیاد شودکمتر
همخوانی با فلسفه Tailwindکاملجزئی خروج از الگو

کِی از کلاس‌های Utility مستقیم استفاده کنیم؟

برای اکثر موارد؛ روش پیش‌فرض و توصیه‌شده Tailwind است و باعث می‌شود استایل و ساختار در یک‌جا و قابل ردیابی باشند.

کِی از دایرکتیو @apply استفاده کنیم؟

وقتی یک ترکیب یکسان و طولانی از کلاس‌ها (مثل استایل دکمه اصلی) در چندین کامپوننت مختلف مدام تکرار می‌شود.

مثال کلاس‌های Utility مستقیم

<button class="px-4 py-2 bg-blue-600 text-white
  rounded-lg hover:bg-blue-700">
  ثبت‌نام
</button>

مثال دایرکتیو @apply

.btn-primary {
  @apply px-4 py-2 bg-blue-600 text-white
    rounded-lg hover:bg-blue-700;
}

اشتباه رایج

اشتباه رایج استفاده افراطی از @apply برای هر عنصر است که فلسفه اصلی Utility-first Tailwind را از بین می‌برد و دوباره برنامه را به سمت نوشتن CSS سنتی و جدا از مارک‌آپ می‌برد؛ @apply باید فقط برای الگوهای واقعاً تکرارشونده به‌کار رود.

جمع‌بندی

برای اکثر استایل‌دهی‌ها مستقیماً از کلاس‌های Utility استفاده کنید و @apply را فقط برای الگوهای تکرارشونده و پرکاربرد نگه دارید.