Node.js - 노드내장객체

ryan·2022년 4월 30일
0
post-custom-banner

REPL

  • R(READ) 읽기 / E(Evaluate) 실행 / P(Print) 결과출력 / L(Loop) 반복
  • 윈도우에서는 명령 프롬프트에 node 입력
    • 경로 설정 후 node (파일명) 입력하면 실행 가능 (결과 출력)

Module

  • 노드는 자바스크립트 코드를 모듈로 만들 수 있음
    • 모듈 : 특정한 기능을 하는 함수나 변수들의 집합, 모듈로 만들면 여러 프로그램에서 사용 가능
  • 다양한 파일에서 사용되는 함수, 객체, 배열, 변수를 모듈화 시켜서 코드 중복을 제거한다.
const {odd, even} = require('./var'); // node module
import {odd, even} from './var'; // javascript module

module.exports = checkOddorEven;
export default checkOddorEven;
  • 노드 모듈 시스템 문법 : module.exports / require는 이고
  • 자바스크립트의 모듈 시스템 문법 : import, export
    • 노드에서도 자바스크립트 모듈 시스템 문법을 지원하지만 완전히 동일한 기능은 하지 않는다는 점을 주의.

global

  • 노드의 전역 객체
    • 모든 파일에서 접근 가능 / window처럼 생략도 가능
    • globalThis로 통일됐음.
    • node에서는 window나 document가 동작하지 않음

console

  • console.log : 에러 로깅
  • console.dir : 객체 로깅
  • console.trace : 호출 스택 로깅
  • console.time / timeEnd
  • time과 timeEnd : 실행되는데 걸리는 시간을 콘솔로 띄워줌

setTimeout setInterval setImmediate

  • 코드가 백그라운드에서 비동기적으로 실행되게 인위적으로 작성할 수 있음'

filename(현재 파일 경로), dirname(현재 폴더, 디렉토리)

  • 브라우저와 다르게 노드는 컴퓨터에 접근을 해서 파일을 직접적으로 수정할 수 있음.
    • console.log(__filename) ...

module exports의 특성

  • module.exports === exports === {}
    • module.exports에 함수를 넣으면 참조관계가 끊기게 됨.
    • exports를 사용하고 module.exports를 함께 사용하면 안됨.
  • 전역 스코프에서 this는 this === module.exports임
    • function 내부의 this는 global

require의 특성

  • require('./var'); // 이렇게만 해도 불러오는 파일을 실행시킬 수 있음

require의 property 중

  • main : require을 실행시키면 기본적으로 module임. require.main을 통해서 어떤 파일을 실행한 건지 알아낼 수 있음

    • require main은 노드 실행 시 첫 모듈을 가리침
  • cache : node는 require로 한 번 읽은 정보를 require cache property 내부에 저장해놓음. 이후에 다시 한번 더 실행시키면 캐시에 저장된 파일을 불러옴.

    • 캐싱 : 하드디스크에 있는 정보를 메모리로 옮기는 걸
      • 하드디스크를 읽는 것은 비교적 느리고 메모리를 읽는 것은 비교적 빠르다.
  • require가 제일 위에 올 필요는 없음 // but import는 가장 위에 있어야 함.

순환 참조

dep1.js
require('./dep2');
dep2.js
require('./dep1');
  • 이런 상황을 막기 위해 순환 참조가 발생하면 {} 빈 객체로 변경함.
profile
프론트엔드 개발자
post-custom-banner

0개의 댓글