Daily/Today I Learned

22.07.25_TIL

ν˜Έλ°€μ΄ 2022. 7. 25. 08:25

πŸ“Œ μ›ΉνŒ©μ€ μ–΄λ ΅λ‹€κ³  많이 λ“€μ—ˆλŠ”λ° μ–΄λ–€ λΆ€λΆ„μ—μ„œ 어렀움이 μžˆλŠ”μ§€ μžμ„Ένžˆ 찾아봐야겠닀.

πŸ“— 였늘 ν•™μŠ΅ν•œ λ‚΄μš©

λ²ˆλ“€λ§

  • 사전적 의미: μ—¬λŸ¬ μ œν’ˆμ΄λ‚˜, μ½”λ“œ, ν”„λ‘œκ·Έλž¨μ„ λ¬Άμ–΄μ„œ νŒ¨ν‚€μ§€λ‘œ μ œκ³΅ν•˜λŠ” ν–‰μœ„
  • 개발적 의미: μ‚¬μš©μžμ—κ²Œ μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ œκ³΅ν•˜κΈ° μœ„ν•œ 파일 묢음

λ²ˆλ“€λ§μ„ μ‚¬μš©ν•˜μ§€ μ•Šμ„ 경우 μΌμ–΄λ‚˜λŠ” 상황

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

μ›ΉνŒ© (Webpack)

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

Webpackμ—μ„œμ˜ λͺ¨λ“ˆ

  • JavaScript의 λͺ¨λ“ˆμ—λ§Œ κ΅­ν•œν•˜μ§€ μ•ŠλŠ”λ‹€. HTML, CSS, jpg, png 같은 이미지 νŒŒμΌλ“€λ„ μ „λΆ€ ν¬ν•¨ν•œ 포괄적인 κ°œλ…μ΄λ‹€.

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

  • λΉŒλ“œ: 개발이 μ™„λ£Œλœ 앱을 λ°°ν¬ν•˜κΈ° μœ„ν•΄ ν•˜λ‚˜μ˜ ν΄λ”λ‘œ κ΅¬μ„±ν•˜μ—¬ μ€€λΉ„ν•˜λŠ” μž‘μ—…
    • Reactμ•±: npm run buildλ₯Ό μ‹€ν–‰ν•˜λ©΄ React buid μž‘μ—…μ΄ μ§„ν–‰λ˜κ³ , index.html νŒŒμΌμ— μ••μΆ•λ˜μ–΄ 배포에 μ΅œμ ν™”λœ μƒνƒœλ₯Ό 제곡
  • λ²ˆλ“€λ§: 묢음의 κ°œλ…(κ·Έλ£Ήν™”), νŒŒμΌμ„ λ¬ΆλŠ” μž‘μ—… κ·Έ 자체λ₯Ό λ§ν•˜λ©° νŒŒμΌμ€ 의쑴적 관계에 μžˆλŠ” νŒŒμΌλ“€ κ·Έ 자체 ν˜Ήμ€ λ‚΄λΆ€μ μœΌλ‘œ ν¬ν•¨λ˜μ–΄ μžˆλŠ” λͺ¨λ“ˆμ„ 의미

Webpack의 ν•„μš”μ„±

  • μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ λΉ λ₯Έ λ‘œλ”© 속도와 높은 μ„±λŠ₯을 μœ„ν•΄μ„œμ΄λ‹€.
  • 각 μžμ›λ“€μ„ 일일히 μ„œλ²„μ—μ„œ μš”μ²­ν•˜μ§€ μ•Šμ•„λ„ 되기 λ•Œλ¬Έμ— λ„€νŠΈμ›Œν¬ μ½”μŠ€νŠΈκ°€ 획기적으둜 쀄어든닀.

μ›ΉνŒ©μ˜ 핡심 κ°œλ…

  • Target
    • target: ["ν”„λ‘œμ νŠΈ ν™˜κ²½", "ECMAScript 버전"]
  • Entry
    • μ›ΉνŒ©μ΄ λ‚΄λΆ€μ˜ λ””νŽœλ˜μ‹œ κ·Έλž˜ν”„λ₯Ό μƒμ„±ν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•΄μ•Ό ν•˜λŠ” λͺ¨λ“ˆ
    • μ§κ°„μ ‘μ μœΌλ‘œ μ˜μ‘΄ν•˜λŠ” λ‹€λ₯Έ λͺ¨λ“ˆκ³Ό 라이브러리λ₯Ό μ°Ύμ•„λ‚Ό 수 μžˆλ‹€.
  • Output
    • μƒμ„±λœ λ²ˆλ“€μ„ 내보낼 μœ„μΉ˜μ™€ 이 파일의 이름을 μ§€μ •ν•˜λŠ” 방법을 webpack에 μ•Œλ €μ£ΌλŠ” μ—­ν• 
  • Loaders
    • Webpack은 JavaScript와 JSON 파일만 μ΄ν•΄ν•˜μ§€λ§Œ λ‘œλ”λ₯Ό μ‚¬μš©ν•˜λ©΄ λ‹€λ₯Έ μœ ν˜•μ˜ νŒŒμΌμ„ μ²˜λ¦¬ν•˜κ±°λ‚˜, μœ νš¨ν•œ λͺ¨λ“ˆλ‘œ λ³€ν™˜ν•΄ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— μ‚¬μš©ν•˜κ±°λ‚˜ λ””νŽœλ˜μ‹œ κ·Έλž˜ν”„μ— μΆ”κ°€ν•  수 μžˆλ‹€.
    • test: λ³€ν™˜μ΄ ν•„μš”ν•œ νŒŒμΌλ“€μ„ μ‹λ³„ν•˜κΈ° μœ„ν•œ 속성 (ν•„μˆ˜)
    • use: λ³€ν™˜μ„ μˆ˜ν–‰ν•˜λŠ”λ° μ‚¬μš©λ˜λŠ” λ‘œλ”λ₯Ό κ°€λ¦¬ν‚€λŠ” 속성 (ν•„μˆ˜)
    • exclude: λ°”λ²¨λ‘œ μ»΄νŒŒμΌν•˜μ§€ μ•Šμ„ νŒŒμΌμ΄λ‚˜ 폴더λ₯Ό 지정
  • Plugins
    • λ²ˆλ“€μ„ μ΅œμ ν™”ν•˜κ±°λ‚˜ 에셋을 κ΄€λ¦¬ν•˜κ³ , ν™˜κ²½λ³€μˆ˜ μ£Όμž… λ“±μ˜ κ΄‘λ²”μœ„ν•œ μž‘μ—…μ„ μˆ˜ν–‰ν•  수 있게 λœλ‹€.
  • Optimization(μ΅œμ ν™”)
    • Webpack 버전 4λΆ€ν„° μ‹€ν–‰
    • minimize: TerserPlugin, optimization.minimize에 λͺ…μ‹œλœ ν”ŒλŸ¬κ·ΈμΈμœΌλ‘œ λ²ˆλ“€νŒŒμΌμ„ μ΅œμ†Œν™”(μ••μΆ•)μ‹œν‚€λŠ” μž‘μ—… μ—¬λΆ€λ₯Ό κ²°μ •ν•œλ‹€.
    • minimizer: default minimizer을 μ»€μŠ€ν…€λˆ TerserPlugin μΈμŠ€ν„΄μŠ€λ₯Ό μ œκ³΅ν•΄μ„œ μž¬μ •μ˜ ν•  수 μžˆλ‹€.
  • Mode
    • webpack에 λ‚΄μž₯된 μ΅œμ ν™” κΈ°λŠ₯을 μ‚¬μš©ν•  수 μžˆλ‹€.
    • development: λͺ¨λ“ˆκ³Ό 청크에 μœ μš©ν•œ 이름을 μ‚¬μš©ν•  수 μžˆλ‹€.
    • production: λͺ¨λ“ˆκ³Ό 청크, FlagDependencyUsagePlugin, FlagIncludedChunksPlugin, ModuleConcatenationPlugin, NoEmitOnErrorsPlugin, TerserPlugin 등에 λŒ€ν•΄ 결정적 망글이름(mangled name)을 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
    • none: κΈ°λ³Έ μ΅œμ ν™” μ˜΅μ…˜μ—μ„œ μ œμ™Έν•œλ‹€.
  • Browser Compatibility

πŸ“˜ μΆ”κ°€λ‘œ 곡뢀할 λ‚΄μš©

[udemy] React μ™„λ²½ κ°€μ΄λ“œ κ°•μ˜ 보기 (맀일 μ‘°κΈˆμ”© 이라도 κΎΈμ€€νžˆ λ“£κΈ°)

Study원과 ν•¨κ»˜ 진행쀑인 ν”„λ‘œμ νŠΈ κ΅¬ν˜„

  • νšŒμ›κ°€μž… 폼 κ΅¬ν˜„

πŸ“ μ€‘μš”ν•œ λ‚΄μš©

  • μ›ΉνŒ©μ΄λž€?
  • μ›ΉνŒ©μ„ μ‚¬μš©ν•˜λŠ” 이유
  • μ›ΉνŒ© μ‚¬μš©λ²•
  • λ²ˆλ“€λ§
  • μ›ΉνŒ©μ˜ κ°œλ…

πŸ€ 참고자료

'Daily > Today I Learned' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

22.07.27_TIL  (0) 2022.07.27
22.07.26_TIL  (0) 2022.07.26
22.07.22_TIL  (0) 2022.07.22
22.07.21_TIL  (0) 2022.07.21
22.07.19_TIL  (0) 2022.07.19