article thumbnail image
Published 2022. 6. 19. 15:00

Nodejs는 Javascript를 브라우저 외의 다른 환경에서도 사용할 수 있게 해주는 런타임 라이브러리입니다. 이 Node.js에서는 http서버가 내장되어 있어 서버로 많이 사용되고 있습니다. 이러한 것들 뿐만 아니라 웹팩, 바벨(이전버전과 현재 버전에 호환되지 않는 부분들을 해결)과 같은 도구들과 일렉트론 같이 자바스크립트 데스크탑 프로그램을 만드는 프레임워크가 모두 Node.js를 기반으로 돌아간다고 합니다.

 

이러한 Node.js의 방식을 통해 거의 Javascript만을 사용하는 프론트 개발자들이 JSP, PHP , Python , spring들과 웹 어플리케이션 서버 같은 공부해야할 것들이 많았지만 Node.js에서는 새로운 서버 언어를 배우지 않고도 자바스크립트만으로 서버를 개발할 수 있는 환경이 구축되었고 사용함에 있어복잡하지않아 많이 사용되기 시작했습니다. 뿐만 아니라 MongoDB라는 자바스크립트로 이루어진 데이터베이스까지 개발되어 사용될 수 있는 환경도 많이 발전되었습니다.

 

추가적으로 Nodejs는 안에 웹서버가 내장되어 있어 코드를 통해 서버를 만들고 실행시키기 때문에 프론트 개발자 입장에선 서버쪽으로 친숙합니다.

 

동작 방식 - Non-blocking I/O , 단일 스레드 이벤트 루프

 

우선 Chrome V8 엔진은 싱글 스레드 이벤트 루프를 기반을 움직인다. 이러한 동작은 Javascript 방식으로 동작한다는 것을 참고사항으로 적어두기 위해 가져온 것이고 자세한 내용은 따로 문서화시키고자 합니다

Node.js 이벤트 루프(Event-Loop)

 

Node.js 이벤트 루프(Event-Loop)

우리가 흔히 말하는 자바스크립트는 무엇을 가르키는 것일까? 이를 이해하기 위해서 우선 ECMA Script에 대한 이해가 필요하다. ECMA Script는 95년 브렌던 아이크에 의해서 초창기 버전의 자바스크립

velog.io

 

 

Non-blocking I/O라는 방식으로 I/O 작업이 진행되는 동안 유저 프로세스의 작업을 중단시키지 않는 방식이다. I/O작업은 파일 입출력 혹은 아래 예시처럼 read / send 방식을 말한다.

 

이 방식도 참고사항으로 알아두면 될거같고 나중에 자바스크립트 엔진에 대해서 공부할 때 다시 다룰 예정입니다.

 

Node.js의 논블로킹 I/O 방식의 장점, 단점

 

Node.js의 논블로킹 I/O 방식의 장점, 단점

블로킹 I/O 방식 블로킹 I/O 방식에서는 I/O 요청에 해당하는 함수 호출은 작업이 완료 될 때까지 스레드의 실행이 차단된다. 즉 I/O가 실행하는 동안 그 스레드의 동작 자체가 멈추고 그 스레드의

coding-god.tistory.com

Nodejs를 만든 Ryan Dahl이 Node.js의 단점을 개선한 Deno

[JS] Node.js를 대체할 Deno

 

웹 서버의 흐름

request -> 서버 처리 -> response로 이어지는 흐름을 기억하세요. 한 가지 더 알아둘 점은 request와 response는 header와 bodyheader는 request, response에 대한 정보(종류, 크기, 캐시 여부 등등)가 들어있고, body는 진짜 주고받고자 하는 내용이 들어있습니다

 

(NodeJS) Node.js와 npm

 

https://www.zerocho.com/category/NodeJS/post/57387cb8715202c8679b3af1

 

www.zerocho.com

[Node.JS] 노드는 무엇이고 어떠한 기능들이 있는가? - (1)

 

[Node.JS] 노드는 무엇이고 어떠한 기능들이 있는가? — (1)

안녕하세요. 캡틴체인입니다!

medium.com

참고 1

Java → 자바 가상 머신 → 어디서나 사용가능

Javascript → Chrome V8 엔진 → 어디서나 사용가능

V8은 Google Chrome과 Node.js에서 사용되고 있으며 구글에서 제작한 자바스크립트 엔진

 

참고 2

npm : JS 관련 패키지를 설치, 관리할 때 사용하는 명령어

node.js를 사용하면 자주쓰이고 재사용되는 코드를 모아 패키지로 만들 수 있는데 그 패키지들을 모아놓은 일종의 앱스토어라고 생각하면 된다.

 

Express

Node.js를 기반으로 만들어진 패키지이자 Nodejs를 서버로 이용하기 위해 단점을 개선하고 경량화시킨 서버 프레임워크 중 하나로 가장 널리 쓰이고 있는 확장 모듈입니다.

 

Express를 사용하면 GET, PUT, POST, DELETE 등 여러 유형의 요청을 처리할 수 있는 웹앱을 더 쉽게 개발할 수 있습니다. Express에는 앱의 파일 아키텍처를 자동으로 만드는 애플리케이션 생성기가 포함되어 있습니다.

 

request -> 서버 처리 -> response흐름

app.post('/profile', function(req, res) {
    res.send("post response")
})

app.get("/profileId", (req,res,next) => {
    res.json(homeContents);
})

해당 주소에 접근하면 JSON형식으로 응답 => GET, PUT, POST, DELETE 등 여러 유형의 요청들을 REST API

 

REST API를 사용하는 웹앱은 URI(주소)를 통하여 서버에 요청을 보냅니다. 서버는 html, xml, json 등으로 응답한다고 합니다 → 주로 Json으로 많이 전송됨

 

단점을 보완한 GraphQL이 있습니다.

 

 

자습서: 초보자를 위한 Windows 기반 Node.js

초보자가 Windows에서 Node.js 개발을 시작하는 데 도움이 되는 가이드입니다.

docs.microsoft.com

 

https://www.zerocho.com/category/NodeJS/post/5789e8d91c9e1ff02bdedad3

 

www.zerocho.com

이후 Nodejs express 설치로 이어집니다.

'TIL > 개념정리' 카테고리의 다른 글

로그인 구현 방식  (0) 2022.06.25
Typescript  (0) 2022.06.23
CSS 레이아웃  (0) 2022.06.21
브라우저 저장방식  (0) 2022.06.20
CI/CD에 관하여  (0) 2022.06.18
복사했습니다!