Skip to content

0819

node.js

  • https://hileejaeho.cafe24.com/docs/js/node-js-기초-개략-정리/
  • 자바스크립트는 원래 웹 브라우저에서만 실행되던 언어였다. 하지만 Node.js가 등장하면서 서버 환경에서도 자바스크립트를 실행할 수 있게 되었고, 덕분에 프론트엔드와 백엔드를 모두 같은 언어(JS)로 개발할 수 있게 되었다. 서버 사이드 렌더링(SSR) 역시 Node.js 환경에서 구현할 수 있으며, 보통은 Express, Next.js 같은 프레임워크를 활용한다. 물론 서버사이드 구현 자체는 Node.js가 아니더라도 PHP, Python, Java 등 다양한 언어로도 가능하다. 관점 자체는 동일하게 서버가 라우팅 요청을 받아 HTML 문자열을 만들어 클라이언트로 전달하는 것이다.
  • JS 자체는 싱글 스레드 동기 언어이지만, 콜백, Promise, async/await 같은 비동기 API와 이벤트 루프 덕분에 비동기 작업도 처리할 수 있다. Node.js 역시 싱글 스레드 이벤트 루프 기반이지만, 내부적으로 libuv를 통해 I/O 작업을 스레드풀로 병렬 처리하여 많은 요청을 효율적으로 처리할 수 있다.
  • Node.js는 처음에 CommonJS 방식을 기반으로 만들어졌다. 따라서 기본적으로는 require와 module.exports를 사용한다. 하지만 최신 Node.js에서는 ES Modules(import, export)도 정식으로 지원하며, 이를 사용하려면 package.json에 "type": "module"을 추가하거나 .mjs 확장자를 사용해야 한다. 다만 CommonJS와 ES Modules 간에는 약간의 호환성 차이가 존재한다.
js
// CommonJS  
const fs = require('fs');  
module.exports = { something };

// ES Modules   
import fs from 'fs';  
export { something };