본문 바로가기

node.js 입문 (JavaScript / Node.js / npm / yarn / 퍼사드패턴) 본문

개발/node.js

node.js 입문 (JavaScript / Node.js / npm / yarn / 퍼사드패턴)

자전하는명왕성 2023. 1. 9. 18:42

JavaScript / Node.js / npm / yarn

 

javascript :브라우저, 문서 등을 다루는 프로그래밍 언어(또는 스크립트 언어)로, 브라우저에서만 동작이 가능하다.

 

node.js : 자바스크립트 실행 프로그램 / 브라우저 없이 실행할 수 있다는 장점을 가진다.

(공식 문서에서는 크롬V8 javaScript 엔진으로 빌드된 javascript 런타임(환경)이라고 설명하고 있다.)

쉽게 말해, node.js 는 javaScript를 실행할 수 있는 프로그램이라고 볼 수 있다.

**node.js를 이용하여 자바스크립트 언어로 서버를 구축하기도 하나, node.js 자체가 서버라고 볼 순 없음

 

npm : node package manager의 준말로,

Node.js 기반에서 실행될 수 있는 모듈(프로그램보다 작은 단위의 기능들)을 관리하는 관리자를 뜻한다.

많은 개발자들이 자신이 만든 모듈, 라이브러리 등을 공유하기 위해

npm사이트(공개저장소)에 등록해 놓았고, 필요할 때 마다 이 모듈들을 가져와 사용함으로써 시간 단축을 할 수 있다.

npm install // npm publish 을 통해, 설치하거나 배포할 수 있다.

 

yarn : 페이스북이 자체 개발한 것으로 성능과 보안이슈를 보안한 npm과 같은 javascript 패키지 매니저다.

npm install -g yarn 으로 직접 설치가 가능하다.

 

 

터미널 활용한 파일 이동 방법

pwd - 현재 위치 출력

mkdir - 파일 생성

ls - 리스트 목록

cp -R - 전체 복사 -R 은 순환시켜 복사함을 의미

rm -rf 삭제

cd - 이동 / cd ..  뒤로 이동

node '파일명' - 콘솔창을 띄우는 것과 비슷한 결과를 얻을 수 있음

 

API

백앤드 컴퓨터의 주역할 == "검증, 보안, 안전"

 

facade

건물 외관을 퍼사드라고 함 - 퍼사드패턴

한눈에 코드를 알아보기 힘들기 때문에 나온 방식이며, 오류가 났을 때 어느 로직에서 문제가 발생했는지 알기 쉽다.

실무에서 사용하는 방식이며 효율적이기 때문에 위와 같은 패턴 사용에 익숙해질 필요가 있다.

 

아래와 같이 해당 함수를 각각 관리하는 방식이라고 볼 수 있을 것 같다.

function checkPhone (myphone) {
    if(myphone.length < 10 || myphone.length > 11){
        console.log("에러 발생!!! 핸드폰 번호를 제대로 입력해주세요.") // Early-exit
        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, result) {
    console.log(myphone + "번호로 인증번호" + result + "를 전송합니다.")
}

// 퍼사드 // 로직이 어떻게 작동하고 있는지 한눈에 파악할 수 있다.
function createTokenOfPhone (myphone) { // myphone : 매개변수(parameter)
    // 1. 휴대폰 번호 자릿수 맞는지 확인 (10자리~11자리)
    const isValid = checkPhone(myphone)
    if(isValid == false) return
    
    // 2. 핸드폰 토큰 6자리 만들기
    const myToken = getToken()
    
    // 3. 핸드폰 번호에 토큰 전송하기
    sendTokenToSMS(myphone, myToken)
}

createTokenOfPhone("01012345678") // 인자(argument)

안전한 코드 , 읽기 좋은 코드가 최우선이라는 것을 잊지말아야 한다!

 

당일 과제에서 응용한 방식

조건1 : 주민번호 가운데에는 '-'이 들어감

조건2 : 주민번호 앞, 뒷자리는 각각 6자리, 7자리

조건3 : 뒷번호 끝에서 6자리는 *표로 마스킹해서 리턴

// 주민번호 가운데가 "-"로 구성
// 주민번호 앞자리는 6, 뒷자리는 7
// 뒤 7자리 중 끝 6자리는 *로 구성


function validHypen(aaa) {
    if(aaa[6] != "-"){
        console.log("에러 발생!! 형식이 올바르지 않습니다!")
        return false
    } else {
        return true
    }
}

function validLength(bbb) {
    let splitArr = bbb.split("-")
    console.log(splitArr)
    if(splitArr[0].length != 6 || splitArr[1].length != 7){
        console.log("에러발생! 개수를 제대로 입력해주세요!")
        return false 
    } else {
        return true
    }
}
function masking (ccc) {
    let splitArr = ccc.split("-")
    let firstThing = splitArr[0]
    let secondThing = splitArr[1]
    console.log(secondThing[0])
    let masking = secondThing[0] + "******"
    let maskingNum = firstThing + "-" +masking
    console.log(maskingNum)
    return maskingNum
}

// 퍼사드 패턴
function customRegistrationNumber (number) {
    let valid = validHypen(number)
    if(valid == false) return

    let valid2 = validLength(number)
    if(valid2 == false) return

    let result = masking(number) 
    return result
}

 

노드를 통해 출력한 메시지

 

Comments