NodeJS - Express란?

김정욱·2020년 12월 9일
1

NodeJS

목록 보기
1/22
post-thumbnail

NodeJS ?

: JavaScript를 실행시키는 런타임 환경 /
  NodeJS 전에는 JS 런타임이 Browser밖에 없었다
    -> NodeJS의 등장으로 JS의 사용범위가 Backend까지 확장!


  • 프로그래밍 언어 / 프레임워크가 아니다!!
  • Single-Thread 기반
  • 비동기 방식
  • 이벤트 기반
  • NodeJS !== Backend
    : Backend에서만 NodeJS를 사용하는 것은 아님
      (Babel같은 경우도 NodeJS를 사용함 -> 즉 Frontend에서도 사용)

Express ?

  • NodeJS 기반MVC 웹 애플리케이션 프레임 워크
  • 서버를 구축하기 쉽게 틀을 제공
    1) HTTP 요청 본문 파싱 (bodyParser 처리를 알아서 해줌)
    2) 쿠키 파싱 (cookieParser 알아서 app.use)
    3) 세션 관리
    4) 데이터 타입을 토대로 한 적절한 응답 헤더 결정
    등등

Express 시작하기

  • Express를 시작하는 방법은 크게 2가지가 있다.
    1) Express 구조 직접 설정
    2) Express-generator 사용하기
       ( Express-generator 사용이 더 편리하다! )

[ Express 구조 직접 설정 ]

1) NodeJS 및 npm 설치
2) npm init 또는 yarn init : package.json 생성
3) npm install express --save 또는 yarn add express --dev
     : express 설치
     (--save나 --dev처럼 의존성에 추가해야 나중에 npm install할 때 추가가 됨)
4) app.js 작성

const express= require("express");
const app = express();

const port = 3000;

   /* /에 대한 get 요청 처리 */
app.get("/", (req, res) => {
	res.send("Hello World!");
});

  /* PORT 열기 */
app.listen(port, ()=>{
	console.log(`Listening Service at ${port}`);
})

5) node app.js : app.js 실행


[ Express-generator 사용 ]

1) NodeJS 및 npm 설치
2) npm install express-generator -g 또는
     yarn global add express-generator
      : express-generator 설치
3) express [프로젝트 이름] : express 프로젝트 생성
4) npm install : 의존성 패키지 설치
5) npm start 또는 yarn start : 프로젝트 실행
     (package.json에 script에 저장된 start가 실행되는 것)


[ Express 기본 구조 ]

├── package.json : npm 의존성 파일들을 관리하는 중심 파일
├── bin
│   └── www : 서버를 실행하는 스크립트 프로젝트에 할당되는 포트 변경 가능
├── public : 각종 리소스들 포함 (이미지, CSS, JS등)
│   ├── images
│   ├── javascripts
│   ├── stylesheets
├── routes : 페이지 라우팅과 관련된 파일 저장
│   ├── index.js : 라우팅의 중심 역할! (여기 기준으로 추가하면 됨)
│   ├── users.js
├── views : jade, ejs등 템플릿 파일들을 모아둠 (웹 서버에서 사용, 앱은 사용 X)
└── app.js : 프로젝트의 중심 / 미들웨어 관리가 이루어짐 / 라우팅의 시작점

* npm install [Module Name] --save
   : --save옵션을 지정해야 dependencies에 추가되어 npm install 시 자동 설치

profile
Developer & PhotoGrapher

0개의 댓글