Node.js 모듈

jimin·2022년 5월 15일
0

nodeJs

목록 보기
2/5
post-thumbnail

js 파일 하나하나가 다 모듈이라고 할 수 있다.

모듈 포맷

  • ES6 모듈 포맷
    - 모듈 내보내기
    export를 변수나 함수 앞에 붙이면 외부 모듈에서 해당 변수나 함수에 접근할 수 있습니다.

    export { func };
    • export default

      해당 모듈엔 개체가 하나만 있다를 명시적으로 알려준다.

      파일 내에서 한개만 export하거나, 대표로 export할 것이 있을 때 많이 사용된다.

        import  func  from './func'; //중괄호 없이 가져올 수 있다. 

    -모듈 가져오기

    import 를 사용하면 외부 모듈의 기능을 가져올 수 있습니다.

      import { func } from './func';
  • CommonJS
    Node.js 의 첫번째 내장 모듈 시스템
    - 모듈 내보내기

    exports를 변수나 함수 앞에 붙이면 외부 모듈에서 해당 변수나 함수에 접근할 수 있습니다.

     module.exports = obj

    -모듈 가져오기

    require 를 사용하면 외부 모듈의 기능을 가져올 수 있습니다

    const obj = require('./func')

    그 외 AMD, UMD 등이 있다.

모듈의 핵심 기능

  • 엄격 모드로 실행됨

    모듈은 항상 엄격 모드(use strict)로 실행됩니다.

  • 모듈 레벨 스코프
    모듈 내부에서 정의한 변수나 함수는 다른 스크립트에서 접근할 수 없다

    (모듈에서 선언한 변수나 함수를 export 해서 접근)

  • 단 한 번만 평가됨

    동일한 모듈이 여러 곳에서 사용되더라도 모듈은 최초 호출 시 단 한 번만 실행

     // admin.js
     export let admin = {
       name: "John"
     };
     
     // a.js
     import {admin} from './admin.js';
     admin.name = "지민";
     
     // b.js
     import {admin} from './admin.js';
     alert(admin.name); // 지민
  • import.meta

    import.meta 객체는 현재 모듈에 대한 정보를 제공해줍니다.

  • this는 undefined

    모듈 최상위 레벨의 this는 undefined입니다. (엄격모드)

    • 모듈이 아닌 일반 스크립트는 전역 객체

모듈 장점

  • 자주 사용되는 코드를 별도의 파일로 만들어서 필요할 때마다 재활용 할 수 있다.
  • 코드를 개선하면 이를 사용하고 있는 모든 애플리케이션의 동작이 개선되었다.
  • 코드 수정 시에 필요한 로직을 빠르게 찾을 수 있다.
  • 필요한 로직만을 로드해서 메모리의 낭비를 줄일 수 있다.
  • 한번 다운로드된 모듈은 웹브라우저에 의해서 저장되기 때문에 동일한 로직을 로드 할 때 시간과 네트워크 트래픽을 절약 할 수 있다.
  • 은닉성을 제공한다. 공개하지 않으려는 코드를 선택적으로 공개되지 않도록 해준다.

모듈 종류

내장 모듈

외장 모듈

  • 일반 Node.js 개발자들이 만들어 놓은 모듈(라이브러리)
    (npm 으로 우리가 다운받는 라이브러리)

모듈 동적으로 가져오기

위에 모듈 문장은 정적이다. import 문에 동적 매개변수를 사용할 수 없다.

참조 https://ko.javascript.info/modules

profile
안녕하세요 백엔드 개발자 지민입니다.

0개의 댓글