[Nodejs] 서버 구축하기

ByeolGyu·2024년 5월 27일

✔ Node.js란?

Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임

  • 노드를 통해 다양한 자바스크립트 애플리케이션 실행
  • 서버를 실행하는데 많이 사용됨
  • 자바스크립트를 서버에서도 사용할 수 있도록 만든 프로그램
  • 내장 HTTP 서버 라이브러리를 포함하고 있어 웹서버에서 아파치 등으 ㅣ별도 소프트웨어 없이 동작 가능

사용이유

JavaScript는 스크립트 언어이기 때문에 브라우저 프로그램 안에서만 동작함 => 웹 브라우저가 없으면 사용할 수 없음

  • Node.js를 설치하면 터미널에서 Node.js를 입력해 브라우저 없이 바로 실행 가능
  • 서버를 만들 수 있음
  • 한 가지 언어(JavaScript)로 전체 웹 페이지를 만들 수 있음

런타임

특정 언어로 만든 프로그램을 실행할 수 있는 환경

  • 즉, 노드는 자바스크립트 프로그램을 컴퓨터에서 실행할 수 있게 하는 자바스크립트 실행기

✔ Node.js 서버

express 프레임워크

Node.js에서 웹 애플리케이션 혹은 API 서버를 구축하는데 가장 많이 사용되는 대표적인 프레임워크

Express로 서버 구축

작업폴더에서 터미널 열기
=> npm init -y : 새로운 Node.js 프로젝트를 초기화하는 명령
=> 폴더 내부에 package.json 파일 생성
=> npm install -- save express 또는 줄여서 npm i -S express :
package-lock.json과 node_modules폴더 생성

  • S : 프로젝트 내부에 설치
  • D : 개발환경에서 사용
  • g : 글로벌 환경에서 설치 (모든 프로젝트에서 사용)

▪ app.js

  • app.js 파일 생성 및 작성

서버 구축

  • const http = require('http');
    : http 모듈을 가져옴. 기본적인 HTTP 서버를 생성할 수 있게 해줌

  • const express = require('express');
    : express 모듈을 가져옴.Node.js에서 간편하게 서버를 구축할 수 있도록 도와주는 프레임워크

  • const app = express();
    : express 함수 호출을 통해 app 객체를 생성
    Express 애플리케이션을 나타내며, 라우트 및 미들웨어 설정에 사용

http 모듈과 express모듈의 결합된 형태로 실행

  • const server = http.createServer(app);
    : http 모듈을 사용하여 app를 감싸서 HTTP 서버(server)를 생성, HTTP 서버와 Express 애플리케이션을 결합하여 실행

  • server.listen(3000, ()=>{});
    : 서버를 포트 3000에서 실행

static 미들웨어

static 미들웨어는 express에서 제공하는 기본 미들웨어이며 express 객체 안에서 꺼내 바로 사용할 수 있음

- app.use(express.static('/public'));
: public 폴더를 static으로 설정하기 (index.html을 기본화면으로 볼 수 있음)
use 를 사용해 static 미들웨어 지정

EJS 템플릿 엔진을 설정하고 사용

  • view engin 템플릿으로 forward 되도록 함
  • views 폴더의 ejs와 같은 템플릿 파일을 만듦
  • ejs 뷰엔진 모듈 설치 : npm i -S ejs

- app.set('views', 'views'); : 뷰 폴더 지정

- app.set('view engine', 'ejs'); : 확장자 지정

- app.get('/home', (req, res) => {});
: ejs 뷰엔진의 내용을 화면에 출력

- req.app.render('home', {}, (err, html)=>{});
: 파일이름, 바인딩하는 객체, 실행 콜백함수
node.js에서 콜백함수는 첫번째 인자가 err

- res.end(); : 한번의 요청에 한번만

▪ index.html

public 폴더 생성 후 index.html 작성

  • app.js에서 작성한 app.use(express.static('/public'));을 통해 public 폴더가 정적폴더로 지정됨

▪ views 폴더

템플릿 엔진 파일을 저장
views 폴더 안에 home.ejs 파일과 profile.ejs 파일을 생성

  • 해당 경로가 요청되었을 때 app.js가 이 파일들을 렌더링하여 클라이언트에게 응답

profile.ejs

profile
ByeolGyu

0개의 댓글