notion day2 review

김지우·2023년 2월 7일
0

TIL

목록 보기
14/16
post-thumbnail

이번엔 회원가입 성공 시 회원가입을 환영하는 이메일 템플릿을 node.js로 구현해보았다.

구조분해할당(Destructuring)과 shorthand property names에 대한 개념을 배우고 실습을 통하여 복습했다.

shorthand property names란?
객체를 정의할 때 동일한 key와 value의 이름으로 사용하게 되는 경우가 있는데, 이때 value를 생략할 수 있습니다. 이를 shorthand property names라고 합니다.

구조분해할당을 사용할 땐 객체와 배열의 특성이 달리 적용되어 처음엔 조금 햇갈렸지만 실제로 사용해보고 console.log를 찍어보니 완벽히 이해가 되었다.

객체와 배열의 구조분해할당
객체 : 객체를 구조분해할당 하게 될 경우 객체 안의 key값을 가져와 할당 => 객체 안의 존재하는 key값의 이름으로 재할당해야하며 순서는 상관없음

배열 : 배열은 구조분해할당 시, 배열의 순서가 매우 중요함



회원가입 템플릿

이번에 만든 회원가입 템플릿 로직도 pacade 패턴을 적용하였다.

index.js
import { checkValidationEmail, getWelcomeTemplate, sendWelcomeTemplateToEmail } from "./email.js";

function createUser(user){
    const isVaild = checkValidationEmail(user.email);
    if(isVaild === true){
        const template = getWelcomeTemplate(user);

        sendWelcomeTemplateToEmail(user.email, template)
    }
}

const user = {
    name: '김지우',
    age: 28,
    school: '다문대학교',
    email: 'wldn0000@naver.com',
  };

  createUser(user)

email.js
import { getToday } from "./utils.js";

// 이메일 검증
export function checkValidationEmail(email) {
  if (email === undefined || !email.includes('@')) {
    console.log('정확한 이메일 주소를 입력해주세요.');
    return false;
  }
  return true;
}

// 회원가입 템플릿
export function getWelcomeTemplate({name, age, school}){
    return `
        <html>
            <body>
                <h1>${name}님 가입을 환영합니다.</h1>
                <hr />
                <div>이름: ${name}</div>
                <div>나이: ${age}살</div>
                <div>학교: ${school}</div>
                <div>가입일: ${getToday()}</div>
            </body>
        </html>
    `
}

// 템플릿을 이메일로 전송
export function sendWelcomeTemplateToEmail(email, template){
    // 템플릿을 이메일에 전송
    console.log(`${email}로 템플릿 ${template}를 전송합니다.`)
}

가입일 부분은 getToday 함수를 만들어서 로직에 적용시켰으며, new Date()메서드를 활용하였다.

new Date()
const date = new Date() // 자바스크립트 Date객체를 date라는 변수에 할당합니다.
date.getFullYear(); // 연도를 반환합니다.
date.getMonth(); // 월을 반환합니다. 0(월)부터 시작하므로 주의하세요!
date.getDate(); // 일을 반환합니다.
date.getDay(); // 요일을 반환합니다.(일요일: 0)
date.getHours(); // 시를 반환합니다.
date.getMinutes(); // 분을 반환합니다.
date.getSeconds(); // 초를 반환합니다.
date.getMilliseconds(); // 밀리초를 반환합니다.

export function getToday() {
    const date = new Date()
    const year = date.getFullYear()
    const month = date.getMonth() + 1
    const day = date.getDay()
    return `${year}-${month}-${day}`
}
console.log(getToday());
profile
백엔드 성장 기록

0개의 댓글