이번에는 쇼핑몰 만들기 프로젝트에서 HTML, CSS, JavaScript 만을 사용하여 사용자 화면 만들기에 대해 포스팅 하겠습니다. 그 중 제가 맡은 js기능에 대해 포스팅하려 합니다.
class Products {
async getProducts(){
try {
let result = await fetch("products.json");
let data = await result.json();
let products = data.items;
products = products.map(item =>{
const {title,price} = item.fields;
const {id} = item.sys;
const image = item.fields.image.fields.file.url;
return {title,price,id,image};
})
return products;
} catch (error) {
console.log(error);
}
}
}
addCartItem(item){
const div = document.createElement("div");
div.classList.add("cart-item");
<>
div.innerHTML = '<img src={item.image} alt="product"/>
<div>
<h4>${item.title}</h4>
<h5>${item.price}</h5>
<span class="remove-item" data-id={item.id}>삭제</span>
</div>
<div>
<i class="fas fa-chevron-up" data-id={item.id}></i>
<p class="item-amount">${item.amount}</p>
<i class="fas fa-chevron-down" data-id={item.id}></i>
</div>
'
</>
cartContent.appendChild(div);
}
class Storage{
static saveProducts(products) {
localStorage.setItem("products",JSON,stringify(Products));
}
static getProducts(id){
let products = JSON.parse(localStorage.getItem("products"));
return products.find(product=>product.id===id);
}
static saveCart(cart){
localStorage.setItem("cart",JSONstringify(cart));
}
static getCart() {
return localStorage.getItem('cart') ? JSON.parse(localStorage.getItem('cart')) : [];
}
}
setupAPP() {
cart = Storage.getCart();
this.setCartValues(cart);
this.populateCart(cart);
cartBtn.addEventListener('click', this.showCart);
closeCartBtn.addEventListener('click', this.hideCart);
}
느낀 점
사실, 이번에 프론트엔드로 웹 화면을 만드는건 처음 해봤습니다. 그것도 순수 자바스크립트만을 이용해서 한다는 것이 쉽지 않았습니다. 기본적인 흐름은 fetch()를 통해서 데이터를 전달 받은 다음, 그것을 화면에 나타내고, 장바구니에 추가된 상품들의 목록은 로컬스토리지를 이용해서 로컬에 저장하는 것 입니다. 비교적 간단하지만 프론트엔드에서 데이터를 다루는 기본적인 것들을 공부하기에 충분했습니다. 또한 리액트, 앵귤러 없이 순수 자바스크립트 만으로 제작한 거라서 실력 향상에 큰 도움이 되었다고 생각합니다. 특히, 사이트 내의 데이터를 관리하는 간단한 방법도 공부할 수 있어서 좋았습니다.