일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- DDD
- typeScript
- 정처기 준비물
- nextJS
- react natvie
- nextjs 라우팅
- react native 내부 구조
- HTML
- 빌딩 블록
- 불변식
- Aggregate
- in app purchase
- TS
- BOUNDED CONTEXT
- 이벤트 시스템
- 정처기 자격
- IAP
- rn
- 정보처리기사
- js
- rniap
- 타입스크립트
- nextjs route code
- 비동기
- 애그리게이트
- 속도개선
- react native bridge
- 이펙티브 타입스크립트
- nextjs사용이유
- std::char_traits<unsigned char>
- Today
- Total
nika-blog
번들링과 빌드 시스템 본문
이번 포스팅은 번들링의 개념과 장점, 번들러의 개념과 구성요소 등에 대해 공부해보겠습니다.
CRA란?
npx create react app myProject.
리액트를 시작할 때 개발 환경 구축을 위한 지식이 없이 빠르게 코드 작성을 할 수 있는 빌드 자동화 문장
번들링이란?
파일을 묶는 작업을 일컫는다.
여기서의 파일은 의존적 관계(import/export)에 있는 파일 그 자체 혹은 내부적으로 포함되어 있는 모듈을 의미하며, 모듈 간의 의존성 관계를 파악하여 그룹화하는 작업이 번들링이다.
번들링 장점
- 웹 서비스에서 랜더링 시 소요시간 감소
웹페이지 요청에 필요한 정적자산(JS, CSS 등)의 크기를 줄일 수 있어 최초 화면 랜더링 시 HTTP 통신 소요시간 줄일 수 있음
(단, 동일한 자산을 요구하는 동일한 페이지 및 사이트에서는 효과가 없을 수 있음) - 정적 자사에 대한 유효성 검사 소요시간 감소
브라우저는 각 자산에 대한 유효성 검사를 추가적으로 필요로 한다. 이때 검사해야 할 파일의 개수가 줄어들면, 그만큼 유효성 검사 대상 파일 크기가 작아지므로 번들링을 통한 성능 개선을 할 수 있다. - 웹 개발 작업 자동화 도구
HTML, CSS, JS 압축, 이미지 압축, CSS 전처리기 변환 작업 지원 - 모듈(파일) 간의 변수 충돌 문제 해결
자바스크립트는 기본적으로 전역 범위를 가짐으로 복잡한 애플리케이션의 경우 문제 발생. 파일 단위의 모듈화로 해결
번들러란?(bundler)
웹 어플리케이션을 구성하는 모든 자원을 하나의 파일로 묶는 도구
ex: Rollup, Parcel, Browserify
<기존 문제점>
- 전역 범위 수백 개 자바스크립트 파일의 중복 선언
- 많은 JS 파일로 인한 느린 로딩
- 수동적인 웹 개발 루틴 작업(파일, 이미지 압축/CSS 전처리기 변환 등)
<장점>
- 모듈 단위의 코드 작성
- 네트워크 병목 완화(최적화)
- 웹 개발 작업 자동화
webpack
모듈 번들링을 해주는 대표적 도구
웹팩 명령어 간소화하기
webpack.config.js 파일은 매번 명령어로 entry, output 등 여러 옵션을 사용하지 않고 해당 파일에서 기본 설정을 할 수 있습니다.
<구성요소>
entry
웹팩에서 자원을 변환하기 위해 필요한 최초 진입점 (자바스크립트 파일 경로)
웹 애플리케이션의 전반적 구조와 내용 포함
싱글 페이지 애플리케이션은 엔트리 포인트가 하나, 멀티 페이지 애플리케이션은 엔트리 포인트 여러 개
output
웹팩을 돌리고 난 결과물의 파일 경로. 객체 형태로 옵션 추가
일반적으로 filename, path를 정의
loader
웹 애플리케이션을 해석할 때 자바스크립트 파일이 아닌 웹 자원들을 변환할 수 있도록 도와주는 속성 (HTML, CSS, 이미지, 폰트)
오른쪽에서 왼쪽 순으로 적용
plugin
추가적인 기능을 제공하는 속성
플러그인은 해당 결과물의 형태를 바꾸는 역할
배열을 사용하며 각 요소들은 객체 인스턴스만 추가 가능
Mode
Webpack 모듈 번들링 과정에서 자체적으로 코드를 최적화하여 용량을 줄입니다.
<용어정리>
**transpile
최신 버전으로 작성한 JS를 하위 버전의 JS로 변환
ex: 웹팩 안 바벨
**Cli
빌드를 구성하고 상호 작용하기 위한 CLI(명령줄 인터페이스)
Webpack Dev Server
개발하는 과정에서 사용하는 도구
웹팩의 빌드 대상 파일 변경 시 웹팩으로 빌드한 후 브라우저 새로고침 -> 개발 생산성 향상
웹팩을 사용하기 전 Node.js & NPM 필요하다.
Node.js
브라우저 밖에서도 자바스크립트를 실행 할 수 있는 환경
NPM(Node Package Manager)
사용이유 : 라이브러리를 HTML 중간에 삽입(CDN방식)하면 직접 찾아야 한다. 그러면 버전관리가 어렵고 라이브러리 의존성이 엮였을 때 문제가 생긴다. 따라서 npm을 이용해 package.json 한 곳에서 관리하는 것이다.
주요 명령어
- npm init : pakage.json 파일 생성
- npm init -y : package.json 파일 생성
- npm install ${라이브러리 이름} : 라이브러리 설치 및 프로젝트 내 node_modules 폴더 생성
install 은 i 로 축약가능 - npm uninstall ${라이브러리 이름}: 해당 라이브러리와 관련된 라이브러리 삭제
자바스크립트 모듈 관련 도구
**모듈 : 특정 기능을 갖는 작은 코드 단위
path
파일 경로를 안전하게 설정하기 위해 사용하는 모듈
ex ) var path = require('path');
AMD & Common.js
자바스크립트 모듈화 라이브러리의 선두 주자
- Common.js : 브라우저 뿐 아니라 서버 사이드 개발에서도 사용하기 용이하도록 만들어짐. node.js 사용 가능
ex ) require, module exports - AMD : 비동기 모듈에 대한 표준안
ex ) define() require()
ES6 Modules
import & export 는 자바스크립트의 코드를 모듈화 할 수 있는 기능.
ES6 기본 문법들이 최신 브라우저에서 지원되지만 import & export 는 아직 보조도구 필요.
<추가 공부 내용>
Source Map
배포용으로 빌드한 파일과 원본 파일을 서로 연결시켜주는 기능입니다.
웹팩의 필수 요소
entry, output, loader, plugin
Hot Module Replacement모든 종류의 모듈을 새로고침 할 필요 없이 런타임에 업테이트 해주는 기능
참고 사이트
[WebDevCurriculum] 번들링과 빌드 시스템
개요 번들링, 웹팩의 개념에 대해 이해한다. > Checklist 여러 개로 나뉘어진 자바스크립트나 이미지, 컴포넌트 파일 등을 하나로 합치는 작업을 하는 것은 성능상에서 어떤 이점이 있을까요? 웹 서
velog.io
https://www.hyojae.info/db57bc7b-0fbd-46bc-a71b-e45bcbfad26e
프론트엔드 빌드 시스템에 대해서 알아보자! (feat. Webpack)
📌 웹팩을 사용하기 전, 알고 있으면 좋은 배경 지식들
www.hyojae.info
'etc' 카테고리의 다른 글
클린코드, code Style Guide (0) | 2022.02.27 |
---|---|
Git: PR + 이슈 작성하기(Pull Request) (0) | 2022.02.24 |
Git 컨벤션 (0) | 2022.02.24 |
WebStorm 주석 색 변경 (0) | 2021.09.06 |
디버깅(Debgging) (0) | 2021.08.24 |