-
[Node.js] 8일차교육 2019. 9. 18. 01:21
cartList = [ ] vs cartList = { }, 배열 vs 객체
- cartList를 배열로 선언한 뒤 cartList [100]에 값을 세팅하면 0~99까지 공간이 자동으로 생성됨
ㄴ 0~99까지 공간을 사용하지도 않는데 자동으로 생성되는 건 비효율적임
ㄴ 따라서 배열보다 객체를 사용했음
JSON.stringify, JSON.parse
- stringify : 자바스크립트 객체를 -> string ( 쿠키 값은 string )
- parse : string -> 자바스크립트 객체로
장바구니 기능 (복잡함)
- 구현할 수 있는 다양한 방법이 존재함 (쿠키, 세션 등등)
- 다양한 케이스를 고려해야 함
ㄴ 비회원인데 상품을 장바구니에 담는 경우
ㄴ 회원인데 상품을 장바구니에 담는 경우ㄴ 비회원인데 장바구니에 상품을 담다가, 로그인한 경우
- 장바구니 기능 구현할 때, 쿠키 사용 시 문제 상황 발생
ㄴ [문제 상황 발생 1] 동일 컴퓨터라면 쿠키가 남아있음 (어떤 회원이던, 비회원이던 => 쿠키 값이 공유가 됨)
ㄴ [문제 상황 발생 2] 동일 컴퓨터에서 다른 아이디로 접속, 쿠키가 남아있음 => [해결책] 로그 아웃할 때 DB 반영
ㄴ [문제 상황 발생 3] 근데 여기서 문제가 로그아웃 안 하고 브라우저 끄면 어쩔 거냐 => [해결책] 장바구니 담을 때마다 서버로 전송- 비회원인데 장바구니에 상품을 담다가, 로그인한 경우 => DB에서 데이터 읽어와서 쿠키에다가 반영해줌
- 정책상 비회원도 상품 구입이 가능할 경우, 구입내역 보고 싶을 때 어떻게 할 것인가
ㄴ 구입 시, 입력한 이메일과 password를 입력하면 보여줄지
ㄴ 아니면 이메일로 orderId를 주고 orderId와 구매할 때 입력한 password 입력하면 보여줄지
ㄴ 정책을 어떻게 가져갈 건지에 따라 구현 방식이 다름 (정책 결정해서 구현하면 됨)- 이것저것 다 따져보면 결론적으로 장바구니 담을 때마다 서버로 전송하는 게 안전
ㄴ 근데 이럴 경우, 로그인 사용자용 / 비로그인 사용자용 장바구니 스크립트를 두 개로 나눠야 함
템플릿 엔진 사용 시 단점
- 백엔드 글로벌 변수와 프런트 글로 별 변수 선언방식이 각각 다름
ㄴ 따라서, 템플릿 엔진을 사용할 경우 순수 자바스크립트 파일(static 폴더에 존재하는)에서 서버 데이터에 접근을 못함ㄴ 이때 약간 트릭을 써야 접근이 가능
ㄴ 공통 layout인 base.html 에서 if isLogin 일 경우 window.xxxx 식으로,순수 자바스크립트에서 접근할 수 있도록 window에다가 값을 세팅함
템플릿 엔진 vs프런트 라이브러리
- ajax로 가져온 데이터를 유지하고 싶으면 리액트 같은 프런트 라이브러리를 쓰는 게 좋음 (저장소에서 변수 관리가 용이)
ㄴ 현재 위치 값 같은 정보를 가지고 있어야 하는 경우, 프런트 라이브러리가 훨씬 좋음 (가장 큰 이유 => 변수 관리 용이)
ㄴ 템플릿 엔진은 계속 콜을 해야 함 (로컬 스토리지 이용하면 사실 이 과정 필요 없음)- 근데 이런 게 필요 없다면 템플릿 엔진 써도 상관없음
ㄴ 템플릿 엔진의 단점은 댓글을 더보기 위해 더보기 버튼을 클릭한 다음(ajax)
ㄴ 다른 페이지 갔다고 뒤로 가기 했을 때 원복이 됨
ㄴ 이걸 가능하게 해 주는 게 프런트 라이브러리 저장소임ㄴ 저장소에 값을 저장해놨기 때문에 똑같이 되돌릴 수가 있음
로컬 스토리지
- 쿠키를 사용해도 됨
- 하지만, 쿠키도 길이 제한이 있어서 로컬 스토리지 사용하기도 함
결제 기능
- 특히 무통장입금은 계좌번호 만료시간을 별도로 저장해야 해서 까다로움
TODO
- 서버에서 쿠키 값 제거
'교육' 카테고리의 다른 글
[Node.js] 11일차 (1) 2019.09.27 [Node.js] 10일차 (0) 2019.09.25 [Node.js] 4일차 (0) 2019.09.11 [Node.js] 3일차 (0) 2019.08.28 [Node.js] 2일차 (0) 2019.08.23