참고자료는
https://youtu.be/NoLV5iP5FNY
정말 쉽게 설명해주신다! (feat. 닭갈비집 알바..)
클라이언트의 요청에 의해 네트워크를 통해 정보나 서비스를 전달하는 컴퓨터. 닭갈비 집에 가서 닭갈비를 시키면 닭갈비 한 판을 가져다주신다. 즉, 갖다 주시는 분, 서빙하는 사람이 server라고 생각하면 된다. 요구를 하면 가져다주는 것! 다시 웹으로 와서 생각해보면 네이버 쇼핑을 누르고 쇼핑정보 갖다주세요~ 하는 것이 클라이언트의 요청이고, 서버가 넹! 하고 보낸 정보를 브라우저에서 해석해서 알려준다.
내가 네이버 웹툰 서버 개발자라고 하면, '어떤 사람이 이 주소로 접속하면 네이버 웹툰 메인 html 파일 전송해드리세요' 하는 코드를 짜는 것이다.
서버는 '요청'을 받으면 그 내용을 보내준다. 보내는 방법 중 HTTP 요청에 대해 알아보자. HTTP 요청 방식은 읽기(GET), 쓰기(POST), 수정(PUT), 삭제(DELETE)의 네가지가 있다.
Javascript는 HTML 조작과 변경을 위해 만들어진 언어다. Javascript 해석은 누가 할까? 해석은 브라우저가 담당하며, 각 브라우저마다 자바스크립트 해석 엔진이 있다. 크롬 브라우저는 V8엔진, 모질라는 SpiderMonkey, IE는 Chakra 엔진을 가지고 있다. 크롬의 V8 해석엔진의 성능이 뛰어났고, 크롬에서 V8 엔진만 떼와 살을 붙여 Node.js로 출시하게 되었다. Node.js가 자바스크립트 언어가 브라우저 내에서 말고도 외부 환경에서도 쉽게 실행이 될 수 있게 도와주기 위해 만들어졌다. 즉, Node.js는 V8엔진을 사용한 자바스크립트 실행창, 실행환경(런타임)이다.
Node.js로 서버를 만드는 이유중 하나는 Non-blocking I/O이다. 고객 네 명이 있다고 치면, 고객한테 요청을 모두 동시에 받는다. 그 후에 처리 속도가 빠른 것부터 결과를 하나씩 전달한다. 그 후에 어려운 작업들을 성공시키고 결과를 전달한다. 즉, 빠르다! SNS나 채팅 서비스는 요청이 매우 많은데, 일반 서버로 구현된 서비스는 서버가 멈출 가능성이 있는 반면 Node.js로 구현한 서버는 서버가 멈추거나 느려지지 않는다. 물론 일반 프로그래밍 언어 또한 서버 스케일링 혹은 멀티쓰레딩을 하면 문제를 보완할 수 있다. 다시 Node.js로 돌아와서, Non-blocking 특성 떡분에 채팅과 SNS에 자주 사용이 되고 있으며 코드가 매우 짧고 쉽다는 특징이 있다.
Express is fast, unopinionated, minimalist web framework for node.js. 라우팅과 로직의 모듈화를 위해 사용된며, 읽기 쉽고 유연하고 지속 가능한 백엔드 앱을 개발할 수 있도록 돕는 프레임워크다.
Express를 사용하면 간편하게 get, post등의 메서드를 붙여 사용할수 있고, 각각의 요청으로 처리하는 함수를 분리해 직관적으로 코드를 설계할 수 있다.
서버를 띄우기 위한 기본 setting
const express = require('express'); // 라이브러리 첨부
const app = express(); // 라이브러리 사용해 객체 생성, app에 담는 것이 컨벤션!
app.listen(8080, function() {
console.log('listening on 8080')
})
; // 서버 오픈할 곳 지정 8080 port에 띄우고 함수 실행해주세요
app.get('/path', function(req, res){
res.send('블라블라')
}); // localhost:8080/path 접속시 블라블라 뜸!
app.get('/', function(req, res){
res.sendFile('__dirname + '/index.html')
}); // 접속한 유저에게 index.html 보여주시지요
//terminal
node 파일명.js
//주소창
localhost:8080
------------------------------------------
//terminal 서버 재실행 자동화
npm install -g nodemon //-g는 global을 뜻함.
yarn add global nodemon
//서버실행
nodemon 파일명.js
res응답 메소드