반응형
Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

웹풀스택 공부 중

10 - 2. Module System 본문

웹개발/JavaScript

10 - 2. Module System

lukeit 2024. 10. 10. 17:36

10 - 2. Module System

모듈 시스템

  • HTML에서 Script의 로드 시점을 조율한다면 웹 브라우저 내 DOM의 로드 속도를 향상 시키는 것이 가능하다

    • 성능에서 고려해야할 것 두가지

      • 다운로드 = Fetch

      • 실행 = execute

        • 두가지가 있다: defer , async

        • defer: 지연 스크팁트

          • 나중에 실행한다
          • DOM의 모든 element에 접근할 수 있고, 실행 순서도 보장하기에 가장 범용적으로 사용된다
          • 스크립트 파일끼리의 의존성이 있는 경우에도 사용이 용이하다
          • 순서를 보장한다
            • HTML에 추가된 (Script가 추가된) 순서대로 실행한다
              • 크기나 먼저 도착한 Script 순서 상관없이!
        • async : 비동기 스크립트

          • 다운로드 시작 (fetch)하자마자 바로 실행된다
          • 실행 순서를 비보장한다 = 자본주의!
            • 먼저온 Script가 먼저 실행된다
          • DOM 의존성이 낮을 때 선택한다
            • ex.) 방문자 수 카운터, 광고 관련 script 와 같이 독립적인 역할을 하는 Third Party Scripts에 적합하다
        • parse (HTML Parsing)은 어떤 DOM이 있는지 인지하는 과정이다

ESM (ECMAScript Modules)

  • 브라우저에서 importexport 를 사용하게 해주는 모듈이다

    • 완벽하게 지원하지 않아 Webpack같은 “모듈 번들러”도 함께 사용해야한다
  • 비동기 import를 지원한다

    • Top-level await를 지원한다
      • 어느 시점에서 비동기로 가져올지 명시가 가능함
      • await: 비동기 작업을 동기적으로 사용할때 수행하는 키워드이다
    • 비동기 import: 디스크 (네트워크)에서 데이터를 비동기로 읽어온 후 (파싱을 먼저 진행한다)
      • 정적 분석을 진행한다
        • 코드 자체를 분석하여 어떤 이슈 (= error)가 있는지 확인한다
        • 먼저 파싱을 하면 보안에 좋다!
  • Named Export의 예시: 고정된 명칭

export const sum = (x, y) => x + y
export const minus = (x, y) => x - y

import **{** sum, minus **}** from './util.mjs'
console.log(sum(2, 4))
  • Default Export의 예시: 명칭 변경 가능!
export default (x, y) => x + y

import ssam from './util.mjs'
console.log(ssam(2, 4))

const sum = (x, y) => x + y
export default sum

import ssam from './util.mjs'
console.log(ssam(2, 4));
반응형

'웹개발 > JavaScript' 카테고리의 다른 글

13 - 1. JavaScript 심화 문법  (2) 2024.10.10
10 - 1. JS 객체 정의 및 사용  (2) 2024.10.08
JavaScript의 기본 - 2  (0) 2024.09.10
JavaScript의 기본  (0) 2024.09.03