webpack-basic

배경

💡
문법 수준에서 모듈을 지원하기 시작한 것은 ES2015 부터이다.

import/export 구문이 없었을때

  • math.js
    function sum(a, b) {
      return a + b;
    }
  • app.js
    console.log(sum(1,2))

아래와 같이 하나의 html 파일 안에서 로딩해야 실행 가능

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script src="src/app.js"></script>
		<script src="src/math.js"></script>
</body>
</html>

문제점

math.js에서 선언한 함수가 전역공간에 노출되기에 다른 파일에서 math.js에서 선언한 함수와 동일한 이름으로 다시 선언했을때 충돌이 발생

 

IIFE 방식의 모듈

위의 문제를 예방하기 위해 스코프를 사용

  • 함수 스코프를 만들어 외부에서 안으로 접근하지 못하도록 공간을 격리

math.js

var math = math || {} // math 네임스페이스

;(function () {
  function sum(a, b) {
    return a + b
  }
  math.sum = sum // 네이스페이스에 추가
})()

app.js에서 math.sum으로 호출하여 사용

다양한 모듈 스펙

CommonJS

💡
자바스크립트를 사용하는 모든 환경에서 모듈을 사용하는 것이 목표
  • exports 키워드로 모듈을 만들고 require()함수로 불러 들이는 방식

math.js

exports function sum(a, b) { return a + b; }

app.js

const math = require("./math.js")
math.sum(1, 2) // 3

AMD(Asynchronous Module Definition)

비동기로 로딩되는 환경에서 모듈을 사용하는 것이 목표다. 주로 브라우져 환경이다.

UMD(Universal Module Definition)

AMD기반으로 CommonJS 방식까지 지원하는 통합 형태다.

💡
이렇게 각 커뮤니티에서 각자의 스펙을 제안하다가 ES2015에서 표준 모듈 시스템 을 내 놓았다. 지금은 바벨과 웹팩을 이용해 모듈 시스템을 사용하는 것이 일반적이다.

ES2015 표준 모듈 시스템

export구문으로 모듈을 만들고 import 구문으로 가져올 수 있다.

math.js

export function sum(a, b) {
  return a + b
}

app.js

import * as math from "./math.js"
// or
import {sum} from "./math.js"
math.sum(1, 2) // 3

※ 출저

https://www.inflearn.com/course/%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C-%EA%B0%9C%EB%B0%9C%ED%99%98%EA%B2%BD/dashboard

 

프론트엔드 개발환경의 이해와 실습 (webpack, babel, eslint..) - 인프런 | 강의

이미 만들어 놓은 개발 환경을 이해할 수 있어요. 처음부터 직접 개발 환경을 만들 수 있어요., - 강의 소개 | 인프런...

www.inflearn.com

 

728x90

'Study > webpack' 카테고리의 다른 글

webpack@4 - babel - basic  (0) 2022.06.04
webpack@4 - plugin  (0) 2022.06.04
webpack@4 - loader  (0) 2022.06.04
webpack@4 - 엔트리/아웃풋  (0) 2022.06.04
webpack@4 - 들어가기전 package.json  (0) 2022.06.04

package.json

  • name: 프로젝트 이름
  • version: 프로젝트 버전 정보
  • description: 프로젝트 설명
  • main: 노드 어플리케이션일 경우 진입점 경로. 프론트엔드 프로젝트일 경우 사용하지 않는다.
  • scripts: 프로젝트 명령어를 등록할 수 있다.초기화시 test 명령어가 샘플로 등록되어 있다
  • author: 프로그램 작성자
  • license: 라이센스

프로젝트 명령어

생성한 프로젝트는 package.json에 등록한 스크립트를 이용해 실행

주요 명령어

  • start: 어플리케이션 실행
  • test: 테스트
  • install: 패키지 설치
  • uninstall: 패키지 삭제

커스텀으로 등록한 명령어는 run을 추가해서 실행

패키지 설치

CDN을 이용한 방법

CDN(컨텐츠 전송 네트워크)로 제공하는 라이브러리를 직접 가져오는 방식

<script src="https://unpkg.com/react@16/umd/react.development.js"></script>

직접 다운

NMP을 이용한 방법

NMP 저장소에서 찾아 우리 프로젝트로 다운로드 하는 명령어

package.json에 설치한 패키지 정보 기록

npm install

유의적 버전

프로젝트에 사용하는 버전 번호를 관리하기 위한 규칙

유의적 버전은 주(Major), 부(Minor), 수(Patch) 세 가지 숫자를 조합해서 버전을 관리한다. 위에 설치한 react의 버전은 v16.12.0인데 주 버전이 16, 부 버전이 12, 수 버전이 0인 셈이다.

각 버전을 변경하는 기준은 다음과 같다

  • 주 버전(Major Version): 기존 버전과 호환되지 않게 변경한 경우
  • 부 버전(Minor version): 기존 버전과 호환되면서 기능이 추가된 경우
  • 수 버전(Patch version): 기존 버전과 호환되면서 버그를 수정한 경우

틸트(~) 는 마이너 버전이 명시되어 있으면 패치버전만 변경한다. 예를 들어 ~1.2.3 표기는 1.2.3 부터 1.3.0 미만 까지를 포함한다. 마이너 버전이 없으면 마이너 버전을 갱신한다. ~0 표기는 0.0.0부터 1.0.0 미만 까지를 포함한다.

캐럿(^) 은 정식버전에서 마이너와 패치 버전을 변경한다. 예를 들어 ^1.2.3 표기는 1.2.3부터 2.0.0 미만 까지를 포함한다. 정식버전 미만인 0.x 버전은 패치만 갱신한다. ^0 표기는 0.0.0부터 0.1.0 미만 까지를 포함한다.

※ 출저

https://www.inflearn.com/course/%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C-%EA%B0%9C%EB%B0%9C%ED%99%98%EA%B2%BD/dashboard

 

프론트엔드 개발환경의 이해와 실습 (webpack, babel, eslint..) - 인프런 | 강의

이미 만들어 놓은 개발 환경을 이해할 수 있어요. 처음부터 직접 개발 환경을 만들 수 있어요., - 강의 소개 | 인프런...

www.inflearn.com

 

728x90

'Study > webpack' 카테고리의 다른 글

webpack@4 - babel - basic  (0) 2022.06.04
webpack@4 - plugin  (0) 2022.06.04
webpack@4 - loader  (0) 2022.06.04
webpack@4 - 엔트리/아웃풋  (0) 2022.06.04
webpack@4 - basic  (0) 2022.06.04

+ Recent posts