최종프로젝트 (로그인 팝업창)

윱니·2024년 1월 16일

로그인 하지 않았을 경우 커뮤니티 페이지로 가는 버튼을 클릭하면 커뮤니티페이지로 가기 전 로그인팝업창을 뜨게했다. 결과물은 다음과 같다.

먼저 아티스트페이지의 버튼을 눌렀을 때 로그인했을 때와 안했을 때를 삼항연산자로 조건부로 나눠주고, 로그인하지 않았을 때만 팝업창이 뜨도록 구현했다.

const handleFloatBtn = () => {
    login ? navigate(`/community/${param.artistName}`) : setIsModalOpen(true);
  };
  .
  .
  .
  return (
  .
  .
  <StFloatBtn onClick={handleFloatBtn}>Go to Community ➜</StFloatBtn>
  {isModalOpen && <Modal setIsModalOpen={setIsModalOpen} />} 
  )

모달은 components 폴더에 Modal 폴더를 만든 후 작업했다.

import React from 'react';
import {StCancelBtn, StDiv, StInfo, StLoginBtn, StModalDiv, StTitle} from './style';
import {useNavigate} from 'react-router-dom';

const Modal = ({setIsModalOpen}: {setIsModalOpen: React.Dispatch<React.SetStateAction<boolean>>}) => {
  const navigate = useNavigate();

  return (
    <StModalDiv>
      <StDiv>
        <StTitle>알림</StTitle>
        <StInfo>로그인 이후 커뮤니티에 입장하실 수 있습니다.</StInfo>
        <StInfo>로그인을 하시겠습니까?</StInfo>
        <StCancelBtn onClick={() => setIsModalOpen(false)}>취소</StCancelBtn>
        <StLoginBtn onClick={() => navigate('/login')}>로그인</StLoginBtn>
      </StDiv>
    </StModalDiv>
  );
};

export default Modal;

<기술면접질문>

  • 쿠키, 세션, 웹스토리지의 차이를 설명해보세요.
    쿠키는 작은 데이터를 클라이언트에 저장하고 서버와 상호작용할 때 사용됩니다. 세션은 서버에 데이터를 저장하여 사용자 상태와 보안을 관리합니다. 웹 스토리지는 브라우저에 데이터를 저장하고 비교적 큰 양의 클라이언트 데이터를 관리합니다.

  • 클라이언트 사이드 렌더링(CSR)과 서버 사이드 렌더링(SSR)의 개념에 대해 설명해주시고, 장/단점을 설명해주세요.
    클라이언트 사이드 렌더링 (Client-Side Rendering, CSR)
    :개념: 웹 페이지의 내용을 서버에서 가져오는 대신, 초기에 HTML 및 기본 구조를 렌더링하고, 그 이후에 JavaScript를 사용하여 동적으로 데이터를 로드하고 렌더링하는 방식. 일반적으로 단일 페이지 애플리케이션(SPA)에서 사용됨.
    장점: 빠른 초기 로드 시간, 부드러운 사용자 경험, 서버 부하 감소, 빠른 데이터 갱신, 클라이언트 측 캐싱 가능.
    단점: 초기 로드 시간이 길 수 있음, SEO에 제약이 있을 수 있음, 모든 로직을 클라이언트에서 처리해야 하므로 보안에 주의가 필요
    서버 사이드 렌더링 (Server-Side Rendering, SSR):
    개념: 서버에서 모든 페이지의 내용을 렌더링하고 완성된 HTML을 클라이언트로 보내는 방식. 사용자가 요청할 때마다 서버에서 새로운 페이지를 생성.
    장점: 검색 엔진 최적화(SEO)에 유리, 초기 로드 시간이 빠름, 모든 내용을 서버에서 관리하므로 보안에 강력함.
    단점: 페이지 간 전환 시 일반적으로 느릴 수 있음, 서버 부하가 높을 수 있음, 사용자 경험이 덜 부드러울 수 있음.
    정리 => 클라이언트 사이드 렌더링은 초기 로드가 빠르고 사용자 경험이 부드러우며 클라이언트에서 모든 로직을 처리하는 장점이 있지만, 초기 로드 시간이 길고 SEO에 취약합니다. 서버 사이드 렌더링은 초기 로드가 빠르고 SEO에 강력하지만 페이지 간 전환 시 느릴 수 있으며 서버 부하가 높을 수 있습니다. 선택은 프로젝트 요구사항과 성능/SEO 등의 요소에 따라 다릅니다.

profile
코린이 탈출을 기원하는 코린이

0개의 댓글