2021. 11. 06. (토) TIL - 바닐라 JS로 크롬 앱 만들기 - loaclStorage, innerText, classList

2021. 11. 7. 01:10NomadCoders/바닐라JS 챌린지

728x90
반응형

# 학습 전 나의 상태

오늘은 개발클럽이 첫 ot 시간을 가졌다. 그런데 모두 바닐라 JS를 중요하게 생각한 것을 알 수 있었다.

그런면에서 내가 시작하고 있던 것이 다행으로 여겨진다.

자바스크립트를 잘 배우고 싶다. 

 

# 오늘의 학습 내용

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Momentum</title>

  <link rel="stylesheet" href="style.css">
</head>
<body>
  <form id="login-form" class="hidden">
    <input 
      required 
      maxlength="15" 
      type="text" 
      placeholder="What is your name?" 
    />
    <input type="submit" value="로그인" />
  </form>
  <h1 id="greeting" class="hidden"></h1>
  <!-- <a href="https://nomadcoders.co">Go to courses</a> -->
  <script src="./app.js"></script>
  <!-- 예제 연습용 js -->
  <!-- <script src="./exam.js"></script> -->
</body>
</html>
CSS

.hidden {
  display: none;
}
const loginForm = document.querySelector('#login-form');
const loginInput = document.querySelector('#login-form input');
const greeting = document.querySelector('#greeting')


// 이렇게 반복되는 String 을 대문자 변수로 저정해 놓으면 실수가 줄고 
// string 이라는 사실을 기억하고 상기시키기 좋다.
const HIDDEN_CLASSNAME = 'hidden';
const USERNAME_KEY = 'username';

// submit 버튼을 눌렀을 때
function handleLoginSubmit(e) {
  // 새로고침 동작을 막아준다.
  e.preventDefault();
  // loginForm에 className hidden을 줘서 숨겨준다.
  loginForm.classList.add(HIDDEN_CLASSNAME);
  // username 이라는 변수에 loginInput.value를 담아준다.
  const username = loginInput.value;
  // 로컬스토리지(브라우저)에 키, 값을 저장한다
  localStorage.setItem(USERNAME_KEY, username);  // key, value
  // 함수 호출, username을 인자로 ..
  paintGreetings(username);
}

function paintGreetings(username) {
  // #greeting에 `Hello ${username}`의 내용을 넣어준다.
  greeting.innerText = `Hello ${username}`; // 백틱(``)으로 하면 편해요!
  // #greeting에 className hidden 을 제거한다.
  greeting.classList.remove(HIDDEN_CLASSNAME);
}

// savedUsername 변수에 username 저장된 정보를 가져온다.
const savedUsername = localStorage.getItem(USERNAME_KEY);

// savedUsername 이 null 이면 form이 보이고
if (savedUsername === null) {
  // show the form
  // loginform에 hidden 을 제거한다.
  loginForm.classList.remove(HIDDEN_CLASSNAME);
  // loginform에 이번트리스너로 submit
  loginForm.addEventListener('submit', handleLoginSubmit);
} else { // null이 아니면 paintGreetings 함수가 실행된다.
  // show the greeting
  paintGreetings(savedUsername);
}

 

# 학습을 마치며

오늘은 로컬스토리지를 사용하는 것과 클래스리스트를 통해서 클래스를 넣어주고 또는 제거할 수 있는 것을 보고 이렇게 사용할 수 있구나를 배웠고, 로컬스토리지를 사용하는 방법에 대해 많이 이해하게 되었다. 이 전에 프로젝트를 진행할 때 토큰을 어디에 둘것이냐 하면서 로컬스토리지를 이야기 했던 적이 있는데 그땐 잘 모르고 막 하려고 했지만 차근차근 배우니 방법에 대해 이해가 잘 된것 같다.

728x90
반응형