frontend-interview-questions

1. چگونه به استایل‌دهی در React رویکرد می‌کنید؟ مقایسه CSS-in-JS، Styled Components، Sass و TailwindCSS.

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

تکنیک مزایا معایب
CSS-in-JS (مثل Emotion، styled-components) استایل‌های محدود به کامپوننت، تم‌دهی پویا، هم‌مکان با کامپوننت‌ها بار اجرایی در زمان اجرا، دشواری در استخراج CSS بحرانی
Styled Components مبتنی بر کامپوننت، پشتیبانی از تم‌دهی، محدودسازی خودکار حجم بسته، تجزیه در زمان اجرا، پیچیدگی زنجیره ابزار
Sass (SCSS) تودرتو، متغیرها، میکسین‌ها، ابزارهای بالغ دامنه جهانی به‌صورت پیش‌فرض، نیاز به BEM یا قراردادهای دستی
TailwindCSS مبتنی بر ابزارها، نمونه‌سازی سریع، پاسخ‌گویی پیش‌فرض نام‌های کلاس طولانی، منحنی یادگیری، جداسازی ضعیف نگرانی‌ها

انتخاب پیش‌فرض من: Tailwind برای تیم‌های سریع یا سیستم‌های طراحی؛ Styled Components برای کتابخانه‌های کامپوننت قابل تم‌دهی.


2. چه استراتژی‌هایی برای اطمینان از پاسخ‌گویی یک برنامه React در دستگاه‌های مختلف استفاده می‌کنید؟


3. چگونه یک سوئیچ حالت تاریک در یک برنامه React پیاده‌سازی می‌کنید؟

از یک وضعیت theme (یا زمینه) استفاده کنید، یک class را در body یا html تغییر دهید و استایل‌ها را به‌صورت شرطی اعمال کنید.

مثال CSS-in-JS: استفاده از ThemeProvider با تم‌های روشن/تاریک.


4. یک کامپوننت دکمه قابل استفاده مجدد در React با Styled Components طراحی کنید که از چندین نوع (مثل اصلی، ثانویه) پشتیبانی کند.

import styled from 'styled-components';

const Button = styled.button`
  padding: 0.5rem 1rem;
  border-radius: 4px;
  font-weight: bold;
  background: ${({ variant }) =>
    variant === 'primary' ? '#007bff' : '#6c757d'};
  color: white;
  border: none;
  cursor: pointer;

  &:hover {
    opacity: 0.9;
  }
`;

// Usage:
<Button variant="primary">Save</Button>
<Button variant="secondary">Cancel</Button>


5. مزایا و معایب استفاده از TailwindCSS در یک پروژه بزرگ React با چندین توسعه‌دهنده چیست؟

مزایا:

معایب:

کاهش مشکلات: استفاده از ابزارهای کمکی (clsx، tailwind-variants) و توکن‌های طراحی برای کاهش تکرار.


6. چگونه تعارض‌های خاصیت CSS را در یک برنامه React با ترکیبی از استایل‌های جهانی و محدود به کامپوننت مدیریت می‌کنید؟


7. چگونه یک انیمیشن CSS در React پیاده‌سازی می‌کنید که بر اساس تغییر وضعیت فعال شود؟

import "./Fade.css"; // .fade { opacity: 0; transition: opacity 0.3s } .fade.show { opacity: 1; }

const FadeComponent = ({ visible }) => (
  <div className={`fade ${visible ? "show" : ""}`}>Hello</div>
);