1. 모듈 관리 방법


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

    ## 1. require ( CommonJS) /exports

      const express = require('express');
        
      const { readFile } = require('fs');//Destructuring Assignment
      /*  
      	fs 전체 모듈을 가져오는 게 아닌,
      	fs의 readfile만 가져온다!
      */
      module.exports = name;
    
    • Node.js의 기본 모듈 시스템.
    • 동기적으로 로드 ( 모듈 로딩이 완료 될 때까지 실행이 중지됨)
      • 성능 저하
      • 실행 중 필요한 모듈을 조건에 따라 불러 올 수 있음.
      • 기본 지원
      • export된 객체 반환
    • Node.js에서 주로 사용됨!

      exports

      1. 여러 개의 객체를 내보낼 경우 →exports.변수 의 개별 속성으로 할당

         exports.myVar = 42;
         exports.myFunction = function() {
           return 'Hello, world!';
         };
        
      2. 딱 하나의 객체를 내보낼 경우 →module.exports = 객체 자체에 할당

         module.exports = {
           myVar: 42,
           myFunction: function() {
             return 'Hello, world!';
           }
         };
        

    ## 2. import (ES6) /export

      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