node.js는 자바스크립트 런타임 환경입니다. 브라우저 외부에서 Google Chrome의 핵심인 V8 JavaScript 엔진을 실행하므로 어디서든 높은 성능을 제공할 수 있습니다.
Node.js의 독특한 장점 중 하나는 브라우저에서 JavaScript를 작성하는 수백만 명의 프론트엔드 개발자가 이제 서버 측 코드(Java, Ruby, Python, PHP)를 클라이언트 측 코드와 별도의 언어를 배우지 않고 작성할 수 있다는 것입니다.
Node.js의 등장 이전에는 JavaScript가 주로 브라우저에서만 실행되는 언어였지만 Node.js의 등장으로 JavaScript는 서버 측 개발에서도 중요한 역할을 하게 되었습니다.
단일 프로세스, 논 블로킹(cpu 낭비 안해서 스레드 동시서 관리에 좋음)
TODO. 내부 동작 파악하기
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Event_loop
Node.js의 내장 HTTP 모듈을 사용하여 서버를 생성하고, 서버가 HTTP 요청을 처리하고 응답하는 방법을 실습해봅시다.
const http = require('http');
const hostname = '127.0.0.1';
const port = 3000;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World\n');
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
node의 배경이 되는 철학은 이벤트 주도 프로그래밍입니다. 이 말은 어떤 이벤트가 발생할지, 어떻게 반응해야 할지 프로그래머가 이해하고 있어야 한다는 뜻입니다. 위의 예제에서의 이벤트는 http 요청입니다. createServer 매서드는 함수를 매개변수로 받는데, 이 함수는 http 요청이 일어날때 마다 호출됩니다.
Node.js를 사용할 것인지 지정할 수 있으며, 이는 매우 편리할 수 있습니다. 반면 웹 개발 시, 방문자가 사용하는 웹 브라우저를 선택할 수 없으므로 어떤 JavaScript 기능을 사용할 수 있는지에 영향을 줄 수 있습니다.
Node.js를 사용하면 Node.js 버전에서 지원하는 최신 ECMAScript 기능(ES2015 이상)을 사용할 수 있습니다. JavaScript는 업데이트가 빠르지만 브라우저가 업그레이드되기까지 기다려야 할 수 있습니다.
Node.js는 CommonJS 모듈 시스템과 ES 모듈 시스템(노드 v12부터)을 모두 지원합니다. 반면 브라우저에서는 ES 모듈 표준을 지원하기 시작했습니다. 이것은 Node.js에서 require() (CommonJS) 또는 import (ES 모듈)를 모두 사용할 수 있음을 의미하며, 브라우저에서는 import만 사용할 수 있음을 의미합니다.
모듈 시스템 더 알아보기
https://velog.io/@eunbinn/commonjs-is-hurting-javascript
Node.js가 서버 측에서 JavaScript를 실행하는 것은 웹 애플리케이션을 구축하는 방식과 성능에 대한 접근 방식을 변경합니다. 다음은 Java 기반 서버와 Node.js를 비교한 상황을 설명합니다:
Java 서버 (서버에서 JavaScript를 실행하지 않는 경우):
Node.js 서버 (서버에서 JavaScript를 실행하는 경우):
Node.js를 사용하면 JavaScript를 서버 측에서 사용하고 실행할 수 있으며, 이를 통해 다음과 같은 이점이 있습니다:
요약하면, Node.js를 사용하면 JavaScript를 서버 측에서 실행하고, 이를 통해 더 효율적인 개발 및 성능을 얻을 수 있습니다. 또한 브라우저로 JavaScript를 보내는 것은 마찬가지지만, Node.js를 사용하면 서버 측에서 JavaScript를 활용하여 서버 측 로직을 처리하고 클라이언트에 동적인 콘텐츠를 제공할 수 있습니다.
https://umanking.github.io/2023/08/04/nodejs-socket-io-chat-app/