20240118

귤금·2024년 1월 18일

Node.js 4기 TIL

목록 보기
16/86

Today?

Node.js 입문주차 (1주차)

  • 웹 프레임워크(Web Framework)?
    웹 서비스를 빠르게 구현할 수 있게 도와주는 도구 프로그래밍의 특정 부분을 추상화하여, 개발자가 더 높은 수준에서 프로그램을 작성할 수 있게 도와준다. 프레임워크는 ‘틀’이라는 의미로, 개발하는 동안 준수해야하는 규칙과 구조를 제공!
    예 : Express.js, Nest.js

yarn

yarn init
yarn init -y

프로젝트를 초기화한다.
-y : 기본값으로 진행하겠다.
-> 초기화 시킨 뒤엔 package.json 파일이 생성된다.

yarn add express
yarn add [package-name]
  • yarn에서 express라는 패키지를 설치했다.
    package.json에
"dependencies": {
    "express": "^4.18.2"
}

가 추가됨.

  • yarn.lock은 어떤 패키지들이 어떤 버전으로 설치되었는지 기록해놓은 파일. 다른 사람과 협업할때 같은 환경으로 개발하기 위해 필요하다.
  • node_modules 폴더는 yarn을 통해 설치된 패키지 파일 폴더. 라이브러리가 여기 설치된다.
node app.js // app.js 실행~
  • 위와 같이 app.js를 실행하면 localhost:3000으로 접속 가능하다.
  • 그런데 만약 3000번 서버가 이미 사용중이라면?
killall node // 실행 중인 모든 Node.js 서버를 종료

💡 모듈(Module)

Javascript를 파일 단위로 분리한 코드 덩어리
여기서 Javascript 파일특정한 기능을 가진 여러 개의 함수변수들의 집합체

node.js에선 보통 CommonJS라는 모듈 시스템을 사용한다.
require 함수로 다른 모듈을 불러올 수 있음
ESM(ECMA Script Module)은 최신 JavaScript에서 지원하는 모듈 시스템


API(Application Programming Interface)

서로 다른 소프트웨어나 어플리케이션 간을 연결해주는 매개체이자 약속

REST(Representational State Transfer) API

HTTP를 통해 웹 서비스의 자원에 접근하는 방식을 “REST 아키텍쳐”의 규칙을 따라 구현된 API

Routing

클라이언트의 요청 조건(Http 메서드, 주소 등)에 대응해 응답(Response)하는 방식

  • Router?
    - 클라이언트의 요청을 쉽게 처리 할 수 있게 도와주는 Express.js의 기본 기능중 하나입니다.
  • Router의 구조
    router.METHOD(PATH, HANDLER);

굿즈라우터를 실행해라(굿즈 라우터 안에 있는 함수 조회)

app.use('/api', [goodsRouter]); 
// api 경로 안으로 들어오면 라우터 안에 있는 함수를 조회하라...?

오늘 배운 것

회고

오늘은 강의 위주로 공부했는데... 진짜... 두루뭉술하게 알던 개념들을 머릿속에 집어넣느라 힘들었따 ㅠ_ㅠ api도 라우터도 모듈도 어디서 많이 들어보긴 했는데 설명하라고 하면 못하던 것들... 그리고 처음 들어보는 개념들도 많아서 머리가 터질 것 같다. 나중에 복습하면서 제대로 소화를 시켜야겠다...
insomenia로 api 반응 테스트도 해봤는데 흥미롭다.

코드카타

1) 길이가 n이고, "수박수박수박수...."와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를들어 n이 4이면 "수박수박"을 리턴하고 3이라면 "수박수"를 리턴하면 됩니다.

//내가 짠 코드
let solution = n => {
    let result = []
    for(i=1; i<=n; i++){
        if(i%2===0){
            result.push('박')
        } else {
            result.push('수')
        }
    }
    return result.join('')
}

//다른 사람 코드
var waterMelon = n =>'수박'.repeat(n/2) + (n%2 === 1 ? '수' : '');

와 엄청 깔끔하게 푸셨다 repeat은 지난 번에 공부했는데 쓸 생각을 못했네...

길이가 같은 두 1차원 정수 배열 a, b가 매개변수로 주어집니다. a와 b의 내적을 return 하도록 solution 함수를 완성해주세요.
이때, a와 b의 내적은 a[0]b[0] + a[1]b[1] + ... + a[n-1]*b[n-1] 입니다. (n은 a, b의 길이)

//내가 짠 코드
let solution = (a,b) => {
    let result = 0;
    for(i=0; i<a.length; i++){
        result+=a[i]*b[i]
    }
    return result
}

//다른 사람 코드 
function solution(a, b) {
    return a.reduce((acc, _, i) => acc += a[i] * b[i], 0);
}

내적이 뭔데...일단 주어진 공식으로 풀고 나중에 찾아봤다. 연산 중 하나라고 함
reduce를 생각을 못하고 무조건 for문으로 해결하려는 습관이 있는데.. 리듀서를 쓰면 저렇게 한 줄로 깔끔하게 짤 수가 있구나

acc가 누적된 반환값을 의미한다는 건 알고 있었는데, 현재 처리하고 있는 배열 요소를 _ 로 표시할 수 있다는 건 몰랐다.. 사용하지 않고 무시할 경우 저렇게 표현 가능하다고 함. JavaScript에서 사용되는 관례랬음!!
초기값 0부터 a와 b의 마지막 요소까지 계산해주는 reduce 함수였다.

0개의 댓글