Node.js 인터뷰 질문 11

질문: Node.js의 핵심 모듈에 대해 설명해주세요.

답변:

Node.js 핵심 모듈은 Node.js가 기본적으로 제공하는 내장 라이브러리로, 외부 패키지 설치 없이 바로 사용할 수 있습니다. 이런 모듈들은 Node.js의 기본 기능을 구성하며, 파일 시스템 접근, 네트워킹, 버퍼 조작 등의 다양한 기능을 제공합니다.

주요 핵심 모듈

  1. http/https: 웹 서버를 생성하고 HTTP 요청을 처리하는 모듈

    const http = require("http");
    const server = http.createServer((req, res) => {
      res.statusCode = 200;
      res.setHeader("Content-Type", "text/plain");
      res.end("Hello World\n");
    });
    server.listen(3000);
    
  2. fs (File System): 파일 시스템과 상호 작용하는 모듈

    const fs = require("fs");
    // 동기식 파일 읽기
    const data = fs.readFileSync("file.txt", "utf8");
    // 비동기식 파일 읽기
    fs.readFile("file.txt", "utf8", (err, data) => {
      if (err) throw err;
      console.log(data);
    });
    
  3. path: 파일 경로를 다루는 모듈

    const path = require("path");
    const filePath = path.join(__dirname, "files", "example.txt");
    console.log(path.basename(filePath)); // example.txt
    console.log(path.extname(filePath)); // .txt
    
  4. os: 운영 체제 관련 정보를 제공하는 모듈

    const os = require("os");
    console.log(os.platform()); // darwin, win32 등
    console.log(os.cpus()); // CPU 정보
    console.log(os.totalmem()); // 총 메모리
    console.log(os.freemem()); // 사용 가능한 메모리
    
  5. events: 이벤트 기반 비동기 프로그래밍을 위한 모듈

    const EventEmitter = require("events");
    class MyEmitter extends EventEmitter {}
    const myEmitter = new MyEmitter();
    myEmitter.on("event", () => {
      console.log("이벤트 발생!");
    });
    myEmitter.emit("event");
    
  6. url: URL 파싱 및 처리를 위한 모듈

    const url = require("url");
    const myUrl = new URL("https://example.com:8080/p/a/t/h?query=string#hash");
    console.log(myUrl.hostname); // example.com
    console.log(myUrl.pathname); // /p/a/t/h
    console.log(myUrl.searchParams.get("query")); // string
    
  7. util: 유틸리티 함수를 제공하는 모듈

    const util = require("util");
    const fs = require("fs");
    // fs.readFile을 프로미스 기반 함수로 변환
    const readFile = util.promisify(fs.readFile);
    readFile("file.txt", "utf8")
      .then((data) => console.log(data))
      .catch((err) => console.error(err));
    
  8. crypto: 암호화 기능을 제공하는 모듈

    const crypto = require("crypto");
    const hash = crypto.createHash("sha256");
    hash.update("안녕하세요");
    console.log(hash.digest("hex"));
    
  9. stream: 데이터 스트리밍을 위한 모듈

    const fs = require("fs");
    const readStream = fs.createReadStream("input.txt");
    const writeStream = fs.createWriteStream("output.txt");
    readStream.pipe(writeStream);
    
  10. buffer: 바이너리 데이터를 직접 다루는 모듈

    const buf = Buffer.from("Hello World", "utf8");
    console.log(buf.toString("hex"));
    console.log(buf.toString("base64"));
    
  11. querystring: URL 쿼리 문자열을 파싱하는 모듈

    const querystring = require("querystring");
    const query = querystring.parse("foo=bar&baz=qux");
    console.log(query); // { foo: 'bar', baz: 'qux' }
    
  12. child_process: 하위 프로세스 생성을 위한 모듈

    const { exec } = require("child_process");
    exec("ls -la", (error, stdout, stderr) => {
      if (error) {
        console.error(`실행 오류: ${error}`);
        return;
      }
      console.log(`stdout: ${stdout}`);
    });
    

핵심 모듈의 중요성

  1. 표준화: 모든 Node.js 설치에서 일관된 API 제공
  2. 최적화: 고성능을 위해 최적화된 구현체 제공
  3. 크로스 플랫폼: 다양한 운영 체제에서 일관된 동작 보장
  4. 생태계 기반: npm의 많은 패키지들이 이러한 핵심 모듈을 기반으로 구축됨

Node.js의 핵심 모듈을 잘 이해하면 효율적인 애플리케이션 개발이 가능하며, 불필요한 외부 의존성을 줄일 수 있습니다.

results matching ""

    No results matching ""