افزودن به سبد خرید» کجای پروژه باید انجام بشه؟
فرانت یا بکاند؟ یا هر دو؟
این سوال ظاهراً ساده، ولی پشتش معماری، UX و حتی امنیته.
گزینه اول: همهچی سمت فرانت (مثلاً فقط توی localStorage)
خوبه چون:
خیلی سریع اجرا میشه
کاربر حس "لگ" نمیگیره
ترافیک سرور هم کمتره
بدیهاش:
موجودی واقعی محصول چک نمیشه
سبد خرید بین دستگاهها همگام نیست
قیمتها ممکنه outdated باشن
گزینه دوم: هر بار تغییر → درخواست به بکاند
خوبه چون:
همهچیز همیشه دقیق و روی دیتابیسه
امکان تحلیل و گزارشگیری بهتره
ولی:
تجربه کاربری کند میشه
هر کلیک، یه درخواست جدید!
راه حل حرفهای: ترکیب جفتش با Optimistic UI
- کاربر روی "Add to cart" کلیک میکنه
- آیتم فوراً توی UI نشون داده میشه (خوشبینانه)
- همزمان، یه درخواست async به بکاند میره
- اگر خطا بود (مثلاً موجودی تموم شد)، تغییر UI برمیگرده
بکاند هم سبد رو توی دیتابیس ذخیره میکنه، موجودی و قیمت رو چک میکنه، و آماده تبدیل به سفارش نهایی هست
@DevTwitter | <Abolfazl Javadinia/>
>>Click here to continue<<
