[팀 포트폴리오] [Momentum 클론 웹사이트] 2. 코드 분석 <greeting.js>
2024. 12. 10. 20:48ㆍ웹개발 포트폴리오
728x90
반응형
// 사용자의 이름을 화면에 표시하는 함수
function paintGreetings(username) {
const greeting = document.querySelector("#greeting");
// HTML에 JS 객체를 연결
if (!greeting) return; // 요소가 없으면 종료
greeting.innerText = `Hello ${username}`;
// HTML의 <h1 id="greeting">에 Hello [사용자 이름] 형식의 텍스트를 삽입한다
greeting.classList.remove("hidden");
// hidden을 지워 숨겨져 있던 인사말을 화면에 표시한다
}
function onLoginSubmit(event) {
// event를 괄호안에 쓰는 이유는 event 객체를 통해 이용 가능한 메서드 예를 들어 바로 아래있는 event.preventDefault() 등을 사용하기 위해서이다
event.preventDefault();
// 폼이 제출될 때 발생하는 기본 동작, 페이지 새로고침을 막는다
const loginInput = document.querySelector("#login-form input");
// HTML에 JS 객체를 연결
if (!loginInput) return;
// 값이 없을 경우 실행하지 않음
const loginForm = document.querySelector("#login-form");
// HTML에 JS 객체를 연결
loginForm.classList.add("hidden");
// 로그인 폼에 hidden 클래스를 추가해 폼을 화면에서 숨긴다
const username = loginInput.value;
// input의 value를 가져와 username으로 선언한다
localStorage.setItem("username", username);
// 로컬 스토리지의 username에 입력한 username을 저장한다
paintGreetings(username);
// paintGreetings(username) 함수가 실행되어 저장된 이름으로 인사말을 표시한다
// 로그인 폼은 표시되지 않는다
}
// 초기화 함수
export function initializeGreetings() {
const loginForm = document.querySelector("#login-form"); // 로그인 폼 가져오기
const savedUsername = localStorage.getItem("username"); // 로컬 스토리지에서 저장된 사용자 이름 가져오기
if (!loginForm) return;
// 로그인 폼이 로드 안되면 함수 종료
if (savedUsername === null) {
// 저장된 이름이 없으면
loginForm.classList.remove("hidden");
// 로그인 폼을 표시 (22행과 연결되는 내용)
loginForm.addEventListener("submit", onLoginSubmit);
// 폼 제출 이벤트 연결
} else {
// 저장된 이름이 있으면
paintGreetings(savedUsername); // 인사말 표시
}
}
*local storage란? : 브라우저에 데이터를 저장할 수 있는 웹 스토리지(Web Storage) API 중 하나
사용자가 데이터를 로컬에 영구적으로 저장할 수 있도록 하며, 브라우저를 닫았다가 다시 열어도 저장된 데이터를 유지한다
데이터는 사용자가 명시적으로 삭제하거나 브라우저 데이터를 지우지 않는 한 영구적으로 유지된다
728x90
반응형
'웹개발 포트폴리오' 카테고리의 다른 글
[팀 포트폴리오] [Momentum 클론 웹사이트] 2. 코드 분석 <background.JSX> (0) | 2024.12.11 |
---|---|
[팀 포트폴리오] [Momentum 클론 웹사이트] 2. 코드 분석 <clock.js> (0) | 2024.12.10 |
[팀 포트폴리오] [Momentum 클론 웹사이트] 2. 코드 분석 <quotes.js> (0) | 2024.12.10 |
[팀 포트폴리오] [Momentum 클론 웹사이트] 2. 코드 분석 <weather.js> (0) | 2024.12.10 |
[팀 포트폴리오] [Momentum 클론 웹사이트] 2. 코드 분석 <todo.js> (0) | 2024.12.10 |