1. 모듈 관리 방법


  • 모듈(완성된 부품)
    • 프로그램 구성 요소. 데이터와 함수를 하나로 묶은 단위

      1. require ( CommonJS) /exports

      ```jsx const express = require(“express”);

    const { readFile } = require(“fs”); //Destructuring Assignment /*
    fs 전체 모듈을 가져오는 게 아닌, fs의 readfile만 가져온다! */ module.exports = name;

    - Node.js의 기본 모듈 시스템.
    - 동기적으로 로드 ( 모듈 로딩이 완료 될 때까지 실행이 중지됨)
      - 성능 저하
      - 실행 중 필요한 모듈을 조건에 따라 불러 올 수 있음.
      - 기본 지원
      - export된 객체 반환
    - Node.js에서 주로 사용됨!
      ### exports
      1. 여러 개의 객체를 내보낼 경우 →exports.변수 의 개별 속성으로 할당
    
         ```jsx
         exports.myVar = 42;
         exports.myFunction = function () {
           return "Hello, world!";
         };
         ```
    
      2. 딱 하나의 객체를 내보낼 경우 →module.exports = 객체 자체에 할당
    
         ```jsx
         module.exports = {
           myVar: 42,
           myFunction: function () {
             return "Hello, world!";
           },
         };
         ```
    ## 2. import (ES6) /export
    ```jsx
    import express from "express";
    import { readFile } from "fs";
    
    export default name;
    
    • 최신 javascript 모듈 시스템, 표준 → 따라서 구버전, Node.js 구버전 등 특정 환경 사용 불가
    • 비동기적으로 로드. (정적)
      • 종속성 관리 신경써야함.
      • 최상위 범위에서만 사용 가능.
      • 웹 개발에서 주로 사용, 최신 브라우저에서 지원됨.
      • 모듈 네임스페이스 반환. 각 export는 해당 네임스페이스에 접근 가능.

        export

    • export {name, sayHello, Person};// 변수, 함수, 클래스를 하나의 객체로 구성하여 export

2. Destructuring Assignment(구조 분해 할당)

  • Javascript에서 배열, 객체의 속성을 분해하여 변수에 할당하는 문법. 즉, 속성을 떼어내서 그것만 할당하는 것.
    1. 배열

      const numbers = [1, 2, 3];
      const [first, second] = numbers; //각 요소를 순서대로 변수로 추출한다.
      
    2. 객체

      const person = {
        name: "John",
        age: 30,
      };
      
      // 객체의 프로퍼티 분해하여 각 변수로 할당.
      const { name, age } = person;
      
      console.log(name); // John
      console.log(age); // 30
      
      // 객체의 프로퍼티를 다른 이름으로 추출
      const { name: personName, age: personAge } = person;
      
      console.log(personName); // John
      console.log(personAge); // 30