🪢node/node 이론 정리

파사드 패턴과 import 하기

하얀성 2023. 10. 5. 10:49

파사드 패턴으로 코드 짜보기

 

Facade Pattern 퍼사드는 '건물의 정면'이라는 뜻입니다. 간단하게 설명하면, 안에 여러 가지 복잡한 로직이 있더라도, 밖에서 보이는 정면에 있는 함수에서는 비교적 간단하게 흐름을 파악할 수 있습니다.

 

위가 퍼사드 패턴.

퍼사드 패턴을 만드는 과정은 리팩토링을 하는 과정이 된다.

부분 함수들을 한데 모아서 사용하는 최종 함수를 의미한다.

function customRegistrationNumber(getNumber) {
  const isValid = checkRegistrationNumber(getNumber);
  if (isValid) {
    hideRegistrationNumber(getNumber)
  }
}

//번호맞게 입력했는지 확인

//토큰 받아서 가려서 출력하는 코드


function checkRegistrationNumber(getNumber) {
  if ([...getNumber][6] !== "-") {
    console.log("에러 발생!!! 형식이 올바르지 않습니다.")
    return false;
  } else if ([...getNumber].length !== 14) {
    console.log("에러 발생!!! 개수를 제대로 입력해주세요.")
    return false;
  } else {
    return true;
  }
}

function hideRegistrationNumber(getNumber) {
  let copyGetNumber = [...getNumber];
  for (let i = 0; i < copyGetNumber.length; i++) {
    if (i >= 8) {
      copyGetNumber[i] = '*';
    }
  }
  const hidenGetNumber = copyGetNumber.join("")
  console.log(hidenGetNumber);
}
// hideRegistrationNumber("210510-1010101");
customRegistrationNumber("210510-1010101");
customRegistrationNumber("210510-1010101010101");
customRegistrationNumber("2105101010101");

import와 export 해보기

부분 함수들에는 각 export를 붙여준다. 

그리고 import 해올 때는 구조분해할당 + 아래처럼 import 해올 때 파일에 js 형식을 붙여주지 않으면 에러가 발생한다.

 

import { checkRegistrationNumber, hideRegistrationNumber } from './resident-registration-number'

function customRegistrationNumber(getNumber) {
  const isValid = checkRegistrationNumber(getNumber);
  if (isValid) {
    hideRegistrationNumber(getNumber)
  }
}

customRegistrationNumber("210510-1010101");
customRegistrationNumber("210510-1010101010101");
customRegistrationNumber("2105101010101");
export function checkRegistrationNumber(getNumber) {
  if ([...getNumber][6] !== "-") {
    console.log("에러 발생!!! 형식이 올바르지 않습니다.")
    return false;
  } else if ([...getNumber].length !== 14) {
    console.log("에러 발생!!! 개수를 제대로 입력해주세요.")
    return false;
  } else {
    return true;
  }
}

수정하고도 그런데 코드에 에러가 발생한다.???  바로 import, export를 사용하기위해 json을 받아서 모듈을 사용해야하기 때문.


export 와 import를 사용하기 위해선

yarn init 명령어를 통해 package.json에서 모듈을 사용해야한다.

{
  "name": "portfolio",
  "version": "1.0.0",
  "main": "index.js",
  "license": "MIT",
  "type": "module"
}

출력이 잘 된다.