Node.js

줌인·2024년 1월 20일

백엔드

목록 보기
1/12

📍 Node.js란?

Node.js는 크로스플랫폼 오픈소스 자바스크립트 런타임 환경으로 윈도우, 리눅스, macOS 등을 지원한다. Node.js는 V8 자바스크립트 엔진으로 구동되며, 웹 브라우저 바깥에서 자바스크립트 코드를 실행할 수 있다.
주로 확장성 있는 네트워크 애플리케이션과 서버 사이드 개발에 사용되는 소프트웨어 플랫폼이며, 논블로킹(Non-blocking) I/O와 단일 스레드 이벤트 루프를 통한 높은 처리 성능을 가지고 있다.
-위키백과

  • 자바스크립트의 다른 버전
  • 자바스크립트를 브라우저 뿐만 아니라 다른 곳에서 실행할 수 있게 해준다.
  • 브라우저에서 실행되는 게 아니기 때문에 자바스크립트 엔진(V8)에 여러 유용한 기능을 추가해준다.



📍 모듈, 파일 불러오기

require function을 통해 모듈이나 파일을 불러올 수 있다.

const fs = require('fs');
const jm = require('./workspace/velog/one')
//일반적인 js와 마찬가지로 파일 확장자명이 .js면 안 써도 된다.

fs 모듈

파일의 읽기와 쓰기 관련 모듈

writeFile과 writeFileSync의 차이

  • writeFileSync()는 파일이 완료될 때까지 코드의 다음 라인이 실행되지 않도록 동기화(Synchronize)함
  • 다른 유저들이 보내어 새로 유입되는 요청도 처리되지 않음

path 모듈

파일의 경로를 지정할 때 쓰이는 모듈

res.sendFile(path.join(__dirname, 'sdfawef', 'asdfawef.html'));

이런 식으로 씀
__dirname은 node.js 전역변수로 절대경로를 이게 쓰인 파일로 고정해줌

path모듈을 사용해 아예 경로용 파일 하나를 만들 수도 있음

const path = require('path');

module.exports = path.dirname(process.mainModule.filename);

path.dirname()은 인자에 파일 이름을 적으면 그 경로를 반환함



📍 Node.js의 동작 원리 이해

  1. 코드를 작성함
  2. 단일 스레드에서 코드가 처리됨
  3. 이벤트 루프가 돌아감
  4. 이벤트 콜백들을 다룸

파일관련 모듈 fs가 있다면

  1. 워커풀로 보내짐
  2. 자바스크립트코드와 관련 없이 다중 스레드에서 처리됨
  3. 결과물이 콜백을 유발함
  4. 이벤트 루프가 다시 돌아감

이벤트 루프

  • 노드js를 계속 실행하도록 하는 루프
  • 모든 콜백을 처리하는데 거기엔 일정한 순서가 있음
  • 매번 루프가 돌아갈 때마다 실행해야하는 타이머 콜백이 있는지 확인하고, 시간이 된 타이머 콜백을 실행함
  • 그 다음 인풋-아웃풋 관련 콜백 체크함
  • 인풋-아웃풋 이벤트를 찾아서 그 콜백을 처리하려고 하는데 만약 실행이 안 될 상황이면 대기 콜백으로 등록
  • 그 뒤로도 몇 단계가 있는데 쨌든 모든 콜백 함수가 다 끝나면 프로그램 종료
profile
지극히 개인적인 복습 블로그

0개의 댓글