Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임
JavaScript는 스크립트 언어이기 때문에 브라우저 프로그램 안에서만 동작함 => 웹 브라우저가 없으면 사용할 수 없음
- Node.js를 설치하면 터미널에서 Node.js를 입력해 브라우저 없이 바로 실행 가능
- 서버를 만들 수 있음
- 한 가지 언어(JavaScript)로 전체 웹 페이지를 만들 수 있음
특정 언어로 만든 프로그램을 실행할 수 있는 환경
- 즉, 노드는 자바스크립트 프로그램을 컴퓨터에서 실행할 수 있게 하는 자바스크립트 실행기
Node.js에서 웹 애플리케이션 혹은 API 서버를 구축하는데 가장 많이 사용되는 대표적인 프레임워크
작업폴더에서 터미널 열기
=> npm init -y : 새로운 Node.js 프로젝트를 초기화하는 명령
=> 폴더 내부에 package.json 파일 생성
=> npm install -- save express 또는 줄여서 npm i -S express :
package-lock.json과 node_modules폴더 생성

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 미들웨어는 express에서 제공하는 기본 미들웨어이며 express 객체 안에서 꺼내 바로 사용할 수 있음

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

- 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(); : 한번의 요청에 한번만
public 폴더 생성 후 index.html 작성

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