일하는/Cloud, Web

Node.js

김논리 2021. 6. 3. 15:33

Node.js는 단순히 웹서버 개발의 용도로만 사용되지 않고, 네이티브 앱 개발, 프론트엔드 개발, 커맨드라인 명령어 프로그램 개발 등, 다양한 분야에서 사용되고 있으며, JavaScript를 웹 브라우저라는 제약에서 벗어나 범용 스크립트 언어로 만들어 준 장본인 이라고 할 수 있다.

다음과 같은 특징을 갖고 있다.

  • V8 JS Engine
  • Event-driven
  • 비동기 non-blocking IO

 

Node.js와 관련된 자세한 내용은 아래 공식 문서 참조!

https://nodejs.org/ko/docs/

 

문서 | Node.js

Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.

nodejs.org


개발 환경

Node.js 설치

공식 홈페이지 (https://nodejs.org/ko/) 에서 다운로드 받아 설치하거나, 아래 명령어를 이용하여 설치할 수 있다.

# MacOs
$ brew install node

# Linux
$ sudo apt install nodejs
$ sudo apt install npm

 

설치 확인은 다음 명령어를 이용하여 버전을 확인하면 된다.

# Node.js 버전 확인
$ node -v
v14.16.0

 

설치 확인은 다음 명령어를 이용하여 버전을 확인하면 된다.

# npm 버전 확인
$ npm -v
6.14.11
npm은 Node의 패키지 관리자로, 개발자들이 만든 패키지를 관리하고 사용할 수 있도록 도와주는 도구이다. (python의 pip?)

 

Express/Express-generator

Express?

웹 서버에 필요한 라우팅, 미들웨어 등의 기능들을 제공하는 웹 프레임워크.

Express-generator?

Express 프레임워크에 필요한 package.json 파일과 기본 구조를 생성해 준다.

다음 명령어를 통해 설치할 수 있다.

$ npm install express-generator -g

Express 프로젝트 생성은 다음과 같이 진행한다.

$ express --view=pug <프로젝트 명>

<프로젝트 명>에 해당하는 디렉토리가 생성되고, Express 프로젝트에 필요한 기본 파일이 해당 디렉토리 하위에 생성된다. 디렉토리로 이동하여 필요한 모듈들을 설치한다.

$ cd <프로젝트 명>
$ npm install

Express project structure

Express-generator를 사용하여 생성한 프로젝트는 다음과 같은 구조를 갖게 된다.

.
├── app.js            # 핵심적인 서버의 역할을 하며, 미들웨어를 관리한다.
├── bin
│   └── www           # 서버를 실행하는 스크립트
├── node_modules      # npm 으로 설치된 모듈을이 저장된다.
├── package-lock.json
├── package.json      # 프로젝트의 이름, 버전, 의존 패키지 리스트 등의 정보를 담고 있는 파일
├── public            # 외부에서 접근 가능한 리소스들을 모아둔다.
│   ├── images
│   ├── javascripts
│   └── stylesheets
│       └── style.css
├── routes             # 라우터들을 관리. 서버의 로직들...
│   ├── index.js
│   └── users.js
└── views              # view 파일들을 관리.
    ├── error.pug
    ├── index.pug
    └── layout.pug

Run Server

다음 명령어를 통해 서버를 실행할 수 있다.

$ npm start
이는 서버 실행 스크립트인 "bin/www" 를 실행 시킨다.