Node.js 빠른 기초1 (with express)

작성자 : 조회수 :

 

팀에서 Node.js 기반의 프로젝트를 하고싶기도 했고 담당을 하게 되어 기초 공부를 진행하려고 합니다.

시간여유가 많다고는 생각이 들지 않아 최대한 신속하게 공부하여 실무에 들어갈 수 있도록 글을 정리중이며

다행이 자바스크립트 문법은 숙지한 상태여서 node.js 의 특징과 express를 기반으로 공부 하려고 합니다.

 

React nextJs로 먼저 자바스크립트를 익숙하게 접해본 저는 오히려

Require 를 사용한 모듈을 가져와 사용하는게 익숙하지는 않았지만 적응하는데 큰 어려움을 없을 것 같습니다

 

추후에는 import require의 차이점, 그리고 나중에는 import를 더 선호하게 되었는지에 대한 주제도 다루어 보겠습니다.

 

저는 실습 준비가 모두 완료된 상태임을 사전에 말씀드립니다. (node 설치, 및 환경변수 세팅완료된 상태)

 

실습을 위한 파일 구조는 이렇습니다.





 

App.js 파일은 이렇습니다.

 

const http = require('http');

 

const express = require('express');

 

const app = express();

 

// 한글 깨짐 방지를 위한 설정

app.use((req, res, next) => {

    res.setHeader('Content-Type', 'text/html; charset=utf-8');

    next();

});

 

// 라우터 모듈 불러오기

const usersRouter = require('./routes/users');

 

// sample 예제

app.get('/sample', (request, response) => {

    response.end(`<div>

        샘플 페이지 테스트

        </div>`);

});

 

// sample 예제2

app.get('/sample/:id', (request, response) => {

    response.end(`<div>

        샘플 페이지 테스트 아이디값 가져오기<br/>

        ${request.params.id}

        </div>`);

});

 

// 라우터 모듈 사용

app.use('/users', usersRouter);

 

app.listen(3000); // 3000포트

 

 

 

 

appnode app.js 를 실행시켰을 때 모두 정상작동하는 것을 알수 있다 그럼 모듈화 된 usersRouter를 확인해보자

 

 

Users.js 파일구조

 

const express = require('express');

const router = express.Router();

 

router.get('/', (req, res) => {

    res.end(`<div>사용자 페이지 입니다</div>`);

});

 

router.get('/:id', (req, res) => {

    res.end(`<div>사용자 아이디가 담긴 요청이네요${req.params.id}</div>`);

});

 

module.exports = router;

 

 

 

이렇게 모듈 실습까지 한 이유는 모듈화를 시켜 페이지별로 라우트를 분리하고 서비스단을 분리하면 될 것 같아 실습해 보았습니다. Express가 없다면 엔드포인트까지 들어온 uri를 직접 스플릿 처리하고 예외를 처리해주어야 하지만 express라는 프레임워크를 사용하면 이와 같이 요청을 편리하게 분기처리 할 수 있다는 장점이 있습니다.

 

 


 

요약

Node.JS 는 프레임워크가 아닌 실행환경이다.

서드파티묘듈이란 다른 개발자나 회사에서 공개 해둔 모듈이다 (maven repository에서 가져온 라이브러리정도로 생각하면 될 듯)

Express 는 그 써드파티모듈중 하나이며 동시에 강력한 프레임워크이다.

Express가 빠진 nodeJs는 약간 스프링 없는 순수 자바로 만든 웹서버 같은 느낌이다 (엔드포인트를 모두 / 스플릿해서 url 을 분기처리하는 코드를 직접짜는등의…)