[Wecode] Express

김택수·2022년 10월 6일
0

Express는 웹 프레임워크이다.

웹 프레임워크 : 공통된 구조를 먼저 제시함으로써, 무에서 유를 만들어낼 때 용이하고 그에 맞는 서비스들을 제공하는 형태

프레임워크의 장점

  1. 대부분의 기능은 이미 만들어진 코드위에서 돌아가기 때문에 효율성이 상승한다.
  2. 지속적으로 개발자들이 리팩토링 해나가기 때문에 버그 발생 가능성이 현저히 낮아진다.
  3. 유지보수에 유리하고, 체계적인 구조를 가지고 있기 때문에 에러가 발생해도 어디에서 발생한 에러인지 찾기가 용이하다.

프레임워크의 단점

  1. 더 능력있는 개발자들이 만든 기능들이기 때문에 복잡한 코드구조를 이해해야함으로 학습시간이 길어진다.
  2. 제작자가 설계한 구조를 따라야하기 때문에 의도한 제약사항들에 따라야만 한다.

그럼에도 불구하고 장점이 단점을 상쇄하기 때문에 프레임워크를 사용하는 것이 바람직하다.

Why Express?

  1. 빠르고 자유롭고 가벼운 웹 프레임워크다.
  2. 최소한의 기능부터 가볍게 웹서버를 구현할 수 있다.
  3. 동작원리를 초석부터 다지기 좋은 프레임워크이다.
  4. 많은 기능을 제공해주는 프레임워크는 기본원리를 파악하기에는 힘들게 하기 때문에 최소한의 기능만 제공하는 Express로 진행하게 됨.

Only Node vs Node+Express

  1. 조건문으로 라우팅처리를 했던 것이 보다 간편해짐.
  2. 요청을 처리하는 함수를 분리함으로 인해 직관적으로 코드를 설계할 수 있는 장점이 있음.

기초 환경세팅

Morgan

Node 서버로 구성된 웹 환경에서는 기본적으로 제공되는 로깅(네트워크 통신기록) 기능이 없기 때문에 log관리를 위해 라이브러리 사용을 권장하고, 그 중 Morgan은 npm에서 사용되는 로그 관리를 위한 여러 패키지들 중 하나이며 많은 Node 개발자들이 사용하고 있다.

Morgan은 http 통신 시 프론트-백 간 소통 시 필요한 정보들을 자동으로 포매팅하여 주고받을 수 있게 해준다.

node 초기 설정

initailizaing
npm init -y : npm 초기화하는데 여러가지 정보를 넣어야하지만 생략하고 Default 값으로 한다는 -y를 붙혀줌

package.json

dependencies : 배포 환경에서 필요한 라이브러리와 패키지를 정리하는 키값
Devdependencies : 개발 환경에서 필요한 라이브러리와 패키지를 정리하는 키값
이 둘의 차이점을 알아 둘 필요가 있다. (언제 배포환경이고 언제가 개발환경인지?)

nodemon

nodemon은 추후에 package.json 파일의 script 부분에 추가하여서 명령어를 만드는데, CLI환경에서 사용되는 것이기 때문에 전역 변수로써 설치 시 -g를 붙혀주는것을 추천한다.

app.use

내가 만들 express서버를 app이라는 변수명에 담아 실행시키고 실행시킨 app에 .use메서드를 사용해서 어떤 것들을 app이라는 express서버 안에서 사용할 것인지 명시해준다.
@ Morgan의 기본 세팅은 morgan('combined')로 할 수 있고 다양한 옵션들이 존재한다.
app.use를 명시해주면 명시한 라이브러리 또는 절차를 한 번 걸치고 난 다음 밑에 get이나 post같은 메서드들을 실행시킬 수 있음.

dotenv

3개의 파일을 만들어 줘야한다.
.gitignore : 숨김파일들을 git에 업로드 시키지 않기 위해
.env.sample : .env에 들어갈 내용들을 양식에 맞게 넣어라 라는 식으로 적어서 github에 업로드 할 수 있음.
ex) PORT 번호가 실제로는 3000번이지만, sample 파일에서는 PORT =
.env : 환경변수 지정을 위해

app.use(express.json())

써주는 이유는 외부에서 들어온 다양한 양식의 데이터들을 json형식으로 parsing 할 수 있도록 만들어주는 기능.
node만 사용했을 때의 JSON.parse(body)와 같은 기능

cors

Cross Origin Resource Sharing의 약자로
다른 도메인이 서로 통신하려고 할 때 엄격한 통신을 완화시켜줄 수 있음.

초기환경의 기초만 배운것이며, 앞으로 공식문서들을 활용하면서 내가 원하는 환경세팅을 할 수 있도록 커스터마이징 하는 작업 또한 거쳐야 할 것.

profile
개발자 키우기 Lv1

0개의 댓글