백엔드 1일차

이동현·2023년 3월 14일
0

코드캠프 백엔드

목록 보기
1/29

1. Node.js / npm / yarn 이해

1) Node.js란?

  • 내 로컬 환경에서도 JavaScript 언어를 싱해라기 위해 만들어졌다.

  • terminal 창에서 node 파일이름 을 적으면 된다.

2) npm이란?

  • Node Package Manager로 Node.js 기반에서 실행될 수 있는 모듈(프로그램보다 작은 단위의 기능들)을 관리하는 관리자를 뜻한다.
  • npm 사이트에 들어가면 많은 개발자들이 만들어 놓은 소스코드나 패키지를 다운 받을 수 있다.

3) yarn이란?

  • 페이스북이 자체 개발한 것으로 npm과 같은 역할을 하는 JavaScript 패키지 매니저입니다.

  • 성능(속도)과 보안 이슈를 보완한 JavaScript 패키지 매니저라고 볼 수 있습니다.

  • yarn init 을 통해 패키지를 다운받는다.

2. Node.js로 토큰 생성 API 만들기

1) API란

  • Application Programming Interface의 약자로,
    프로그램이 동작하는 환경을 제어하기 위해서 환경에서 제공되는 조작 장치이다.
    이 조작 장치는 프로그래밍 언어를 통해서 조작할 수 있다.

  • 함수라고 생각하면 편하다!!

2) 인증번호 발급 API 만들기

// console.log("안녕하세요~ Hello World");
// 나쁜 예
// function createTokenOfPhone(qqq) {
//   //qqq: 휴대폰번호, 매개변수(parameter)
//   // 1. 휴대폰 자릿수 맞는지 확인하기(10~11)
//   if (qqq.length >= 10) {
//     if (qqq.length <= 11) {
//       // 2. 핸드폰 토큰 6자리 만들기
//       const result = String(Math.floor(Math.random() * 1000000)).padStart(
//         6,
//         "0"
//       );
//       console.log(result);
//       // 3. 휴대폰번호에  토근 전송하기!
//       console.log(qqq + "번호로 인증번호 " + result + "를 전송합니다.");
//     } else {
//       console.log("에러 발생!!! 핸드폰 번호를 제대로 입력해 주세요!!!");
//     }
//   } else {
//     console.log("에러 발생!!! 핸드폰 번호를 제대로 입력해 주세요!!!");
//   }
// }
// 좋은 예제로 리팩토링
function createTokenOfPhone(qqq) {
  //qqq: 휴대폰번호, 매개변수(parameter)
  if (qqq.length < 10 || qqq.length > 11) {
    console.log("에러 발생!!! 핸드폰 번호를 제대로 입력해 주세요!!!");
    return;
  }
  // early exit 패턴
  // 2. 핸드폰 토큰 6자리 만들기
  const result = String(Math.floor(Math.random() * 1000000)).padStart(6, "0");
  console.log(result);
  // 3. 휴대폰번호에  토근 전송하기!
  console.log(qqq + "번호로 인증번호 " + result + "를 전송합니다.");
}
//  버튼클릭
createTokenOfPhone("01012345678"); // 01012345678: 인자(argument)

3. 퍼사드(Facade)

  • 성벽처럼 함수를 여러개 만들어서 마지막에 한번에 할당해준다.
function checkPhone(myphone) {
  if (myphone.length < 10 || myphone.length > 11) {
    console.log("에러 발생!!! 핸드폰 번호를 제대로 입력해 주세요!!!");
    return false;
  } else {
    return true;
  }
}
function getToken() {
  const result = String(Math.floor(Math.random() * 1000000)).padStart(6, "0");
  console.log(result);
  return result;
}
function sendTokenToSMS(myphone, mytoken) {
  console.log(myphone + "번호로 인증번호 " + mytoken + "를 전송합니다.");
}
// 좋은 예제로 리팩토링
function createTokenOfPhone(myphone) {
  // qqq: 매개변수(parameter)
  // 1. 휴대폰번호 자릿수 맞는지 확인하기(10~11)
  const isValid = checkPhone(myphone);
  if (isValid === false) return;
  // 2. 핸드폰 토큰 6자리 만들기
  const mytoken = getToken();
  // 3. 핸드폰번호에 토큰 전송하기
  sendTokenToSMS(myphone, mytoken);
}
// 버튼클릭
createTokenOfPhone("01012345678"); // 01012345678: 인자(argument)

4. 과제

const checkPhone = function (phonenumber) {
  const frontResult = phonenumber.split("-")[0];
  const backResult = phonenumber.split("-")[1];
  if (phonenumber[6] !== "-") {
    console.log("에러 발생!!! 형식이 올바르지 않습니다!!!");
    return false;
  }
  if (frontResult.length !== 6 || backResult.length !== 7) {
    console.log("에러 발생!!! 갯수가 올바르지 않습니다!!!");
    return false;
  } else {
    return true;
  }
};
const getToken = function (phonenumber) {
  console.log(phonenumber.substring(0, 8) + "******");
};
const customRegistrationNumber = function (phonenumber) {
  const isValid = checkPhone(phonenumber);
  if (isValid === false) return;
  getToken(phonenumber);
  //   console.log(psw);
};

0개의 댓글