본 내용은 인프런 김정환님의 프론트엔드 개발환경의 이해와 실습 (webpack, babel, eslint..) 강의를 토대로 작성하였습니다.
1. 웹팩이 필요한 이유
- 전역 스코프의 오염 위험
- 예) 전역 스코프에 함수나 변수를 선언하면 다른 파일에서도 접근이 가능
- 애플리케이션이 예측할 수 없게 되고 런타임 에러가 발생
2. IIFE 방식의 모듈
- 즉시 실행 함수 표현(IIFE, Immediately Invoked Function Expression)
- 전역 스코프 오염 문제를 예방하기 위해 사용
- 함수 외부에서 함수 내부를 접근할 수 없음
- 외부로부터 독립적
var math = math || {};
(function() {
// 함수 안에 넣음으로써 독립적
function sum(a, b) {
return a + b;
}
// math에 할당함으로 외부에서 사용할 수 있음
math.sum = sum;
}());
3. 다양한 모듈 시스템
- 자바스크립트 모듈을 구현하는 대표적인 명세: AMD, CommonJS
- CommonJS
- JavaScript를 사용하는 모든 환경에서 모듈을 하는 것이 목표
- exports 키워드로 모듈을 생성
- require 함수로 모듈을 불러들임
- Node.js에서 사용
- AMD(Asynchronous Module Definition)
- 비동기로 로딩되는 환경에서 모듈을 사용하는 것이 목표
- 주로 브라우저 환경
- UMD(Universal Module Definition)
- AMD기반으로 CommonJS 방식 지원
- ES2015 표준 모듈 시스템
- 현재 Webpakc, Babel로 일반적으로 사용하는 모듈 시스템
- export 구문으로 모듈 생성
- import 구문으로 모듈 불러들임
4. 브라우져의 모듈 지원
- 인터넷 익스플로러와 같은 몇 몇 브라우져는 모듈을 지원하지 않음
- Webpack을 사용하면, 브라우져에 무관하게 모듈을 사용가능하다.
Reference
'programming study > Front-end' 카테고리의 다른 글
Babel - 기본개념(등장 배경, 설치, 기본 동작, 플러그인) (0) | 2021.08.17 |
---|---|
Webpack - 플러그인(Plugin) (0) | 2021.08.16 |
Webpack - 로더 (0) | 2021.08.15 |
Webpack - 엔트리와 아웃풋 (0) | 2021.08.14 |
NPM (0) | 2021.08.12 |