이번엔 회원가입 성공 시 회원가입을 환영하는 이메일 템플릿을 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());