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


🎯 اهداف این بخش

  • پیاده سازی سبد خرید در حافظه مرورگر
  • افزودن محصولات به سبد خرید
  • نمایش تعداد محصولات در آیکون سبد خرید
  • ذخیره و بازیابی اطلاعات سبد خرید
  • حذف محصولات از سبد خرید

📌 ساختار پروژه

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

bash
project/
├── index.html
├── css/
│ └── style.css
├── js/
│ ├── main.js
│ └── cart.js
└── images/

📌 پیاده سازی سبد خرید

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

javascript
class Cart {
constructor() {
this.cartItems = this.getCartFromStorage();
this.updateCartIcon();
}
addToCart(product) {
// بررسی وجود محصول در سبد خرید
const existingItem = this.cartItems.find(item => item.id === product.id);
if (existingItem) {
existingItem.quantity += product.quantity || 1;
} else {
product.quantity = product.quantity || 1;
this.cartItems.push(product);
}
this.saveCartToStorage();
this.updateCartIcon();
}

توضیحات کد:

  • constructor: در هنگام ایجاد نمونه از کلاس، سبد خرید از localStorage خوانده می‌شود
  • addToCart: محصول جدید به سبد اضافه می‌شود یا تعداد محصول موجود افزایش می‌یابد
  • localStorage: برای ذخیره سبد خرید بین صفحات و حتی بعد از بستن مرورگر

📌 ذخیره و بازیابی سبد خرید

توابع مربوط به ذخیره و بازیابی سبد خرید از localStorage:

javascript
getCartFromStorage() {
const cartJson = localStorage.getItem('cart');
return cartJson ? JSON.parse(cartJson) : [];
}
saveCartToStorage() {
localStorage.setItem('cart', JSON.stringify(this.cartItems));
}
clearCart() {
this.cartItems = [];
this.saveCartToStorage();
this.updateCartIcon();
}

📌 نمایش تعداد محصولات در آیکون سبد خرید

برای نمایش تعداد محصولات در آیکون سبد خرید از تابع زیر استفاده می‌کنیم:

javascript
updateCartIcon() {
const cartIcon = document.querySelector('.cart-icon');
const totalItems = this.cartItems.reduce((total, item) => total + item.quantity, 0);
if (totalItems > 0) {
cartIcon.innerHTML = `<span class="cart-count">${totalItems}</span>`;
} else {
cartIcon.innerHTML = '';
}
}

📌 حذف محصول از سبد خرید

برای حذف یک محصول از سبد خرید:

javascript
removeFromCart(productId) {
this.cartItems = this.cartItems.filter(item => item.id !== productId);
this.saveCartToStorage();
this.updateCartIcon();
}

📌 استفاده از کلاس Cart در پروژه

برای استفاده از کلاس Cart در پروژه:

javascript
// ایجاد نمونه از کلاس Cart
const cart = new Cart();
// افزودن رویداد کلیک به دکمه‌های "افزودن به سبد خرید"
document.querySelectorAll('.add-to-cart').forEach(button => {
button.addEventListener('click', () => {
const productId = parseInt(button.dataset.productId);
const product = {
id: productId,
name: button.dataset.productName,
price: parseFloat(button.dataset.productPrice)
};
cart.addToCart(product);
alert('محصول به سبد خرید اضافه شد');
});
});

📌 تمرین عملی

کلاس Cart را تکمیل کنید تا امکان تغییر تعداد محصولات در سبد خرید را نیز فراهم کند:

javascript
// تابعی برای به‌روزرسانی تعداد یک محصول در سبد خرید
updateQuantity(productId, newQuantity) {
// کد خود را اینجا بنویسید
}

راهنمای تمرین:

  1. محصول مورد نظر را در آرایه cartItems پیدا کنید
  2. تعداد جدید را به آن اختصاص دهید
  3. سبد خرید را در localStorage ذخیره کنید
  4. آیکون سبد خرید را به‌روز کنید

📌 قدم بعدی

در بخش سوم با نمایش سبد خرید و محاسبه جمع کل آشنا خواهیم شد!