ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • require
    프론트엔드/javascript 2025. 1. 3. 15:25
    728x90

    require

    require는 JavaScript에서 모듈을 가져오는 데 사용되는 함수로, 주로 Node.js 환경에서 사용됩니다. 이를 통해 다른 파일에서 정의된 코드나 외부 라이브러리를 현재 파일에 가져와 사용할 수 있습니다.

    기본 사용법

    const 모듈이름 = require('모듈경로');
    // 모듈이름 : 불러온 모듈을 저장할 변수
    // 모듈경로 : 불러오고자 하는 모듈의 경로. 내장 모듈, 로컬 파일, 또는 npm 패키지를 지정할 수 있음

    모듈의 종류

    • 내장 모듈 : Node.js에 기본적으로 포함된 모듈, fs http, path 등
    • 로컬 모듈 : 프로젝트 내에서 작성한 JavaScript 파일로, 상대 경로를 사용하여 불러옴
    • npm 패키지 : npm을 통해 설치한 외부 라이브러리로, 패키지 이름만으로 불러올 수 있음

    주요 특징

    1. 모듈 가져오기: require는 CommonJS 모듈 시스템의 일부로, 모듈을 현재 파일로 가져옵니다.
      const fs = require('fs'); // Node.js 내장 모듈 fs를 가져옴
      const myModule = require('./myModule'); // 로컬 파일의 모듈을 가져옴
    2. 파일 경로 규칙:
      • 로컬 파일: 경로 앞에 ./나 ../를 사용해야 합니다.
        const myFile = require('./myFile.js'); // 같은 디렉토리의 myFile.js 가져오기
      • Node.js 모듈: 파일 경로 없이 모듈 이름만 적으면 Node.js가 기본 또는 node_modules 디렉토리에서 해당 모듈을 찾습니다.
        const express = require('express'); // npm 패키지 가져오기
    3. 동기적 로딩: require는 동기적으로 작동하므로, 호출 시 파일을 즉시 읽고 실행합니다. 이로 인해 초기 로드 시간이 길어질 수 있습니다.
    4. 모듈 캐싱: 동일한 모듈을 여러 번 require해도, 처음 로드된 인스턴스가 캐시되어 재사용됩니다. (즉, 모듈은 한 번만 실행됨)
      const mod1 = require('./module');
      const mod2 = require('./module');
      console.log(mod1 === mod2); // true
    5. module.exports와의 관계: require로 가져온 값은 해당 모듈의 module.exports에 설정된 값입니다.
      // myModule.js
      module.exports = { hello: 'world' };
      
      // main.js
      const myModule = require('./myModule');
      console.log(myModule.hello); // "world"

    주의사항

    1. 브라우저 환경에서는 기본적으로 지원되지 않음: require는 Node.js의 CommonJS 모듈 시스템에서 사용되며, 브라우저에서는 동작하지 않습니다. 브라우저 환경에서는 대신 ES Modules (import/export)을 사용해야 합니다.
    2. 동기적 로딩의 단점: 서버 환경에서는 괜찮지만, 클라이언트 환경에서는 비효율적일 수 있습니다. 그래서 브라우저 환경에서는 Webpack, Rollup과 같은 번들러로 모듈을 처리합니다.

    Modern JavaScript와 비교

    ES Modules의 import/export는 require와 유사한 역할을 하며, 더 최신의 방식입니다.

    • CommonJS (require):
      const fs = require('fs');
      module.exports = { hello: 'world' };
    • ES Modules:
      import fs from 'fs';
      export const hello = 'world';

    Node.js 12 이상에서는 ES Modules도 기본적으로 지원됩니다.

    728x90

    '프론트엔드 > javascript' 카테고리의 다른 글

    History API  (0) 2025.01.04
    Fetch API  (0) 2025.01.04
    PerformanceAPI  (0) 2024.12.31
    Querystring  (0) 2024.12.29
    jquery 확장 메서드  (0) 2024.07.06
Designed by Tistory.