h e 1 1 o !

λ²ˆλ“€λ§ & μ›ΉνŒ© λ³Έλ¬Έ

p r o g r a m m i n g

λ²ˆλ“€λ§ & μ›ΉνŒ©

hee.hee 2022. 7. 25. 11:32

 

πŸ“‚  λ²ˆλ“€λ§


λ²ˆλ“€λ§μ€ μ—¬λŸ¬ μ œν’ˆμ΄λ‚˜, μ½”λ“œ, ν”„λ‘œκ·Έλž¨μ„ λ¬Άμ–΄μ„œ νŒ¨ν‚€μ§€λ‘œ μ œκ³΅ν•˜λŠ” ν–‰μœ„λ₯Ό μ˜λ―Έν•œλ‹€.
ν”„λ‘ νŠΈμ—”λ“œ κ°œλ°œμžμ—κ²Œ λ²ˆλ“€μ€ μ‚¬μš©μžμ—κ²Œ μ›Ή μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ œκ³΅ν•˜κΈ° μœ„ν•œ 파일 λ¬ΆμŒμ΄λ‹€.

μ‚¬μš©μžκ°€ λΈŒλΌμš°μ €λ₯Ό μ—΄κ³  μ£Όμ†Œλ₯Ό μž…λ ₯ν•˜λ©΄, ν•΄λ‹Ή μ£Όμ†Œμ—μ„œ ν”„λ‘ νŠΈμ—”λ“œ κ°œλ°œμžκ°€ λ²ˆλ“€λ§ν•œ μ—¬λŸ¬ νŒŒμΌμ„ λ°›λŠ”λ‹€. 이 νŒŒμΌμ„ λΈŒλΌμš°μ €κ°€ μ‹€ν–‰ν•˜μ—¬ λ©‹μ§„ μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ‚¬μš©μžμ—κ²Œ μ œκ³΅ν•˜κ²Œ λœλ‹€.

 

 

HTML, CSS, JS νŒŒμΌμ„ κ·ΈλŒ€λ‘œ μ „μ†‘ν•˜μ§€ μ•Šκ³  λ²ˆλ“€λ§μ„ ν•˜λŠ” 이유

  • 두 개의 .js νŒŒμΌμ—μ„œ 같은 λ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜κ³  μžˆμ–΄μ„œ, λ³€μˆ˜ κ°„ 좩돌이 μΌμ–΄λ‚¬μŠ΅λ‹ˆλ‹€.
  • λ”± ν•œ 번 λΆˆλŸ¬μ˜€λŠ” ν”„λ ˆμž„μ›Œν¬ μ½”λ“œκ°€ 8MBλΌμ„œ, 인터넷 속도가 느린 κ΅­κ°€μ˜ λͺ¨λ°”일 ν™˜κ²½μ—μ„œ μ‚¬μš©μžκ°€ λΆˆνŽΈμ„ ν˜Έμ†Œν•©λ‹ˆλ‹€.
  • λ²ˆλ“€ 파일 μ‚¬μ΄μ¦ˆλ₯Ό 쀄이기 μœ„ν•΄μ„œ 파일의 곡백을 λͺ¨λ‘ μ§€μ› λŠ”λ°, 가독성이 λ„ˆλ¬΄ λ–¨μ–΄μ Έμ„œ μ½”λ”©ν•˜κΈ°κΈ° μ–΄λ ΅μŠ΅λ‹ˆλ‹€. κ²°κ΅­ κ·ΈλŒ€λ‘œ 곡백을 λ˜λŒλ €μ„œ μ½”λ”©ν•©λ‹ˆλ‹€.
  • 배포 μ½”λ“œκ°€ λ„ˆλ¬΄ 읽기 μ‰¬μ›Œ κ°œλ°œμ„ ν•  쀄 μ•„λŠ” μ‚¬μš©μžκ°€ ν”„λ‘ νŠΈμ—”λ“œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μž„μ˜λ‘œ μ‘°μž‘ν•˜μ—¬ ν”Όν•΄κ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€.
  • μ‚¬μš©μžμ—κ²Œ λ°°ν¬ν•˜κΈ° μœ„ν•΄ μš©λŸ‰μ„ 쀄여야 ν•œλ‹€. 

 

 

 

 

 

 

 

πŸ“‚  μ›ΉνŒ©


Webpackμ΄λž€ μ—¬λŸ¬ 개의 νŒŒμΌμ„ ν•˜λ‚˜μ˜ 파일둜 ν•©μ³μ£ΌλŠ” λͺ¨λ“ˆ λ²ˆλ“€λŸ¬λ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€. λͺ¨λ“ˆ λ²ˆλ“€λŸ¬λž€ HTML, CSS, JavaScript λ“±μ˜ μžμ›μ„ μ „λΆ€ 각각의 λͺ¨λ“ˆλ‘œ 보고 이λ₯Ό μ‘°ν•©ν•΄ ν•˜λ‚˜μ˜ 묢음으둜 λ²ˆλ“€λ§(λΉŒλ“œ)ν•˜λŠ” λ„κ΅¬μž…λ‹ˆλ‹€.

 

βœ”οΈ  λͺ¨λ“ˆ λ²ˆλ“€λŸ¬κ°€ μ™œ ν•„μš”ν• κΉŒ?

λͺ¨λ˜ μ›ΉμœΌλ‘œ λ°œμ „ν•˜λ©΄μ„œ JavaScript μ½”λ“œμ˜ 양이 μ ˆλŒ€μ μœΌλ‘œ 많이 μ¦κ°€ν–ˆκ³ , 또 λŒ€κ·œλͺ¨μ˜ μ˜μ‘΄μ„± 트리λ₯Ό κ°€μ§€κ³  μžˆλŠ” λŒ€ν˜• μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ λ“±μž₯ν•˜λ―€λ‘œμ¨ μ„ΈλΆ„ν™”λœ λͺ¨λ“ˆ 파일이 폭발적으둜 μ¦κ°€ν–ˆμŠ΅λ‹ˆλ‹€. 이 λͺ¨λ“ˆ λ‹¨μœ„μ˜ νŒŒμΌλ“€μ„ ν˜ΈμΆœμ„ ν•΄ λΈŒλΌμš°μ €μ— λ„μ›Œμ•Ό ν•˜λŠ”λ°, JavaScript μ–Έμ–΄μ˜ νŠΉμ„±μ— 따라 λ°œμƒν•˜κΈ° μ‰¬μš΄ 각 λ³€μˆ˜λ“€μ˜ μŠ€μ½”ν”„ 문제λ₯Ό ν•΄κ²°ν•΄μ•Ό ν•˜κ³ , 각 μžμ›μ„ ν˜ΈμΆœν•  λ•Œμ— μƒκ²¨λ‚˜λŠ” λ„€νŠΈμ›Œν¬ μͺ½μ˜ μ½”μŠ€νŠΈλ„ μ‹ κ²½μ¨μ€˜μ•Όλ§Œ ν–ˆμŠ΅λ‹ˆλ‹€.
κ·Έλž˜μ„œ 이런 λ³΅μž‘μ„±μ— λŒ€μ‘ν•˜κΈ° μœ„ν•΄ ν•˜λ‚˜μ˜ μ‹œμž‘μ (Ex. React App의 index.js λ“±)μœΌλ‘œλΆ€ν„° μ˜μ‘΄μ„±μ„ κ°€μ§€λŠ” λͺ¨λ“ˆμ„ λͺ¨λ‘ μΆ”μ ν•˜μ—¬ ν•˜λ‚˜μ˜ 결과물을 λ§Œλ“€μ–΄λ‚΄λŠ” λͺ¨λ“ˆ λ²ˆλ“€λŸ¬κ°€ λ“±μž₯ν•˜κ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

 

 

 

βœ”οΈ webpackμ—μ„œ λͺ¨λ“ˆ

webpack은 2022λ…„ 7μ›” ν˜„μž¬ ν”„λ‘ νŠΈμ—”λ“œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 배포λ₯Ό μœ„ν•΄μ„œ κ°€μž₯ 많이 μ‚¬μš©ν•˜λŠ” λ²ˆλ“€λŸ¬μ΄λ‹€.

https://webpack.kr/guides/getting-started

 

Getting Started | μ›ΉνŒ©

Learn how to bundle a JavaScript application with webpack 5.

webpack.kr

Webpackμ—μ„œμ˜ λͺ¨λ“ˆμ€ JavaScript의 λͺ¨λ“ˆμ—λ§Œ κ΅­ν•œν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. Webpack은 μ£Όμš” ꡬ성 μš”μ†ŒμΈ λ‘œλ”(loader)λ₯Ό 톡해 λ‹€μ–‘ν•œ νŒŒμΌλ„ λ²ˆλ“€λ§μ΄ κ°€λŠ₯ν•©λ‹ˆλ‹€. HTML, CSS, ν˜Ήμ€ .jpgλ‚˜ .png 같은 이미지 νŒŒμΌλ“€λ„ μ „λΆ€ ν¬ν•¨ν•œ 포괄적인 κ°œλ…μž…λ‹ˆλ‹€. 

 

 

 

 

πŸ“Ž  λΉŒλ“œμ™€ λ²ˆλ“€λ§

λΉŒλ“œλŠ” 개발이 μ™„λ£Œλœ 앱을 λ°°ν¬ν•˜κΈ° μœ„ν•΄ ν•˜λ‚˜μ˜ 폴더(directory)둜 κ΅¬μ„±ν•˜μ—¬ μ€€λΉ„ν•˜λŠ” μž‘μ—…μ„ λ§ν•œλ‹€.

μ•„λž˜λŠ” λ¦¬μ•‘νŠΈ κΈ°μ€€ λΉŒλ“œ 과정이닀.

npm run buildλ₯Ό μ‹€ν–‰ν•˜λ©΄
React build μž‘μ—…μ΄ μ§„ν–‰λ˜κ³ 
index.html νŒŒμΌμ— μ••μΆ•λ˜μ–΄
배포에 μ΅œμ ν™”λœ μƒνƒœλ₯Ό μ œκ³΅ν•œλ‹€

λ²ˆλ“€λ§μ€ 말 κ·ΈλŒ€λ‘œ 묢음의 κ°œλ…μ΄λ‹€. νŒŒμΌμ„ λ¬ΆλŠ” μž‘μ—… κ·Έ 자체λ₯Ό λ§ν•˜λ©°, νŒŒμΌμ€ 의쑴적 관계에 μžˆλŠ” νŒŒμΌλ“€(import, export) κ·Έ 자체 ν˜Ήμ€ λ‚΄λΆ€μ μœΌλ‘œ ν¬ν•¨λ˜μ–΄ μžˆλŠ” λͺ¨λ“ˆμ„ μ˜λ―Έν•œλ‹€. λ²ˆλ“€λ§μ€ λͺ¨λ“ˆ κ°„ μ˜μ‘΄μ„±μ„ νŒŒμ•…ν•΄ κ·Έλ£Ήν™”ν•˜λŠ” μž‘μ—…μ΄λΌκ³  λ³Ό 수 μžˆλ‹€.

 

 

πŸ“Ž  μ›ΉνŒ©μ˜ ν•„μš”μ„±

 

Webpack이 ν•„μš”ν•œ κ°€μž₯ 큰 μ΄μœ λŠ” μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ λΉ λ₯Έ λ‘œλ”© 속도와 높은 μ„±λŠ₯을 μœ„ν•΄μ„œμ΄λ‹€. μ›ΉνŽ˜μ΄μ§€λ₯Ό κ΅¬μ„±ν•˜λŠ” μ½”λ“œμ˜ 양이 λ§Žμ€ 것을 β€œλ¬΄κ²λ‹€β€λΌκ³  ν‘œν˜„ν•˜λŠ”λ°, 이것이 무거우면 무거울수둝 μ›Ή νŽ˜μ΄μ§€μ˜ λ‘œλ”© 속도와 μ„±λŠ₯은 μ €ν•˜ λœλ‹€. 일반적으둜 μœ μ €μ˜  32%κ°€ μ›Ήμ‚¬μ΄νŠΈμ— μ ‘κ·Όν•˜λŠ” μˆœκ°„λΆ€ν„° 3초 이내에 μ›ΉνŽ˜μ΄μ§€κ°€ λœ¨μ§€ μ•ŠμœΌλ©΄ λ”λŠ” 기닀리지 μ•Šκ³  μ΄νƒˆμ„ μ„ νƒν•œλ‹€. λ•Œλ¬Έμ— λ‘œλ”© 속도λ₯Ό κ°œμ„ ν•΄μ•Ό ν–ˆκ³ , λΈŒλΌμš°μ €μ—μ„œ μ„œλ²„λ‘œ μš”μ²­ν•˜λŠ” 파일의 숫자λ₯Ό 쀄여야 ν–ˆλ‹€.

  • μ›ΉνŒ©μ€ λ²ˆλ“€ μ‚¬μ΄μ¦ˆλ₯Ό μ€„μ—¬μ„œ μ‚¬μš©μžκ°€ 더 λΉ λ₯΄κ²Œ μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ‚¬μš©ν•  수 μžˆλ„λ‘ 돕기 λ•Œλ¬Έμ— μ‚¬μš©μž κ²½ν—˜ κ°œμ„ μ— μΆ©λΆ„νžˆ κΈ°μ—¬ν•œλ‹€.
  • Webpack이 μ—†λ‹€λ©΄ 각 μžμ›λ“€μ„ 일일히 μ„œλ²„μ— μš”μ²­ν•΄ 얻어와야 ν•˜μ§€λ§Œ, Webpack이 μžˆλ‹€λ©΄ 같은 νƒ€μž…μ˜ νŒŒμΌλ“€μ€ λ¬Άμ–΄μ„œ μš”μ²­ 및 응닡을 받을 수 있기 λ•Œλ¬Έμ— λ„€νŠΈμ›Œν¬ μ½”μŠ€νŠΈκ°€ 획기적으둜 쀄어든닀.
λ˜ν•œ Webpack loaderλ₯Ό μ‚¬μš©ν•˜λ©΄ 일뢀 λΈŒλΌμš°μ €μ—μ„œ μ§€μ›ν•˜μ§€ μ•ŠλŠ” JavaScript ES6의 문법듀을 ES5둜 λ²ˆν™˜ν•΄μ£ΌλŠ” babel-loaderλ₯Ό μ‚¬μš©ν•  수 있게 λ©λ‹ˆλ‹€. Vue인 κ²½μš°λŠ” vue-loaderλ₯Ό, scss 파일 같은 κ²½μš°λŠ” css 파일둜 λ³€ν™˜ν•΄μ£ΌλŠ” scss-loader λ“±μ˜ loader도 μ‚¬μš©ν•  수 있기 λ•Œλ¬Έμ— κ°œλ°œμžλŠ” 본인이 μ›ν•˜λŠ” μ΅œμ„ μ˜ 개발 방식을 선택해 κ°œλ°œν•  수 μžˆκ²Œλ” μ§€μ›ν•˜κΈ°λ„ ν•©λ‹ˆλ‹€.
그리고 Webpack4 λ²„μ „ μ΄μƒλΆ€ν„°λŠ” Develoment, Production 두 κ°€μ§€μ˜ λͺ¨λ“œλ₯Ό μ§€μ›ν•©λ‹ˆλ‹€. μ—¬κΈ°μ„œ Production λͺ¨λ“œλ‘œ λ²ˆλ“€λ§μ„ μ§„ν–‰ν•  경우, μ½”λ“œ λ‚œλ…ν™”, μ••μΆ•, μ΅œμ ν™”(Tree Shaking) μž‘μ—…μ„ μ§€μ›ν•˜κΈ°λ„ ν•©λ‹ˆλ‹€. ν•œλ§ˆλ””λ‘œ μƒμš©ν™” 된 ν”„λ‘œκ·Έλž¨μ„ μ‚¬μš©μžκ°€ λŠλΌκΈ°μ— λ”μš± μΎŒμ ν•œ ν™˜κ²½ 및 λ³΄μ•ˆκΉŒμ§€ μ‹ κ²½μ“°λ©΄μ„œ λ…ΈμΆœμ‹œν‚¬ 수 μžˆλ‹€λŠ” μ μ—μ„œλ„ Webpack의 ν•„μš”μ„±μ€ ꡉμž₯히 높은 편이라고 ν•  수 μžˆκ² μŠ΅λ‹ˆλ‹€.

 

 

 

 

 

 

 

좜처

μ½”λ“œμŠ€ν…Œμ΄μΈ 

https://urclass.codestates.com/content/cc9ff40a-3d8a-4bd9-a99e-f80971e41fea?playlist=2376

'p r o g r a m m i n g' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

λ²ˆλ“€λ§&μ›ΉνŒ© / μ›ΉνŒ©μ˜ 핡심 κ°œλ…  (0) 2022.07.25
git 였λ₯˜ / gitignore  (0) 2022.07.11
chunk, buffer  (0) 2022.06.16
Effect Hook  (3) 2022.06.14
REST API μ„±μˆ™λ„ λͺ¨λΈ(RMM), Open API와 API Key  (0) 2022.06.10