πŸŒ• F-lab λ©˜ν† λ§ 기둝

λ©˜ν† λ§ 이후 λΆ€μ‘±ν•œ 뢀뢄을 μ±„μš°κΈ° μœ„ν•œ 기둝

JavaScript ν”„λ‘œν† νƒ€μž… 체인

  • ν”„λ‘œν† νƒ€μž…: μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ 기반이 λ˜λŠ” κ°œλ…μœΌλ‘œ 각 ν•¨μˆ˜μ˜ μƒμœ„ 객체λ₯Ό μ°Έμ‘°ν•  수 μžˆλŠ” ν”„λ‘œνΌν‹°
  • ν”„λ‘œν† νƒ€μž… 체인: μ–΄λ–€ 객체의 ν”„λ‘œν† νƒ€μž… λ˜ν•œ ν”„λ‘œν† νƒ€μž…μ„ κ°–κ³  있으며 이λ₯Ό 톡해 μŠ€μ½”ν”„ 체인 처럼 μƒμœ„ ν”„λ‘œν† νƒ€μž…μ„ μ°Έμ‘°ν•˜λ©° ν”„λ‘œν† νƒ€μž…μ΄ κ°–κ³  μžˆλŠ” λ©”μ„œλ“œλ₯Ό ν™œμš©ν•  수 μžˆλŠ” 방법

JavaScript ν΄λ‘œμ €μ™€ 정보은닉

  • ν΄λ‘œμ €: μ–΄λ–€ ν•¨μˆ˜μ˜ λ³€μˆ˜λ₯Ό μ°Έμ‘°ν•˜λŠ” λ‚΄λΆ€ ν•¨μˆ˜κ°€ μ™ΈλΆ€λ‘œ 전달될 λ•Œ, 참쑰된 κ·Έ λ³€μˆ˜κ°€ λ©”λͺ¨λ¦¬μ—μ„œ μ œκ±°λ˜μ§€ μ•ŠλŠ” ν˜„μƒ
function counterFactory() {
  var count = 0;
  this.count = ++count;
}
// μœ„μ™€ 같은 방식은 객체λ₯Ό 생성해도 countκ°€ 계속 0으둜 μ΄ˆκΈ°ν™”λœλ‹€. λ˜ν•œ, λ§Œλ“€μ–΄μ§„ 객체의 μ™ΈλΆ€μ—μ„œ count값에 접근이 κ°€λŠ₯ν•˜λ©° λ³€κ²½ κ°€λŠ₯

function counterFactory() {
  var _count = 0;
  return function () {
    return ++_count;
  };
}
// ν΄λ‘œμ €λ₯Ό μ΄μš©ν•˜λ©΄ _countκ°€ λ©”λͺ¨λ¦¬μ— 계속 λ‚¨μ•„μžˆκΈ°μ— 호좜 μ‹œ 계속 1이 더해지며, μ™ΈλΆ€μ—μ„œ 직접 _count에 μ ‘κ·Όν•  수 μ—†λ‹€.

JavaScript React λΆˆλ³€μ„±

  • λΆˆλ³€μ„±: 객체가 졜초둜 μƒμ„±λ˜μ—ˆμ„ λ•Œμ˜ 값이 λ³€ν•˜μ§€ μ•Šκ³  μœ μ§€λ˜λŠ” 것 -> λ©”λͺ¨λ¦¬ μ˜μ—­μ—μ„œ 값을 λ³€κ²½ν•  수 μ—†λ‹€λŠ” 의미

μ›μ‹œν˜•μ€ 데이터λ₯Ό ν• λ‹Ήν•  λ•Œ, 데이터λ₯Ό λ©”λͺ¨λ¦¬μ— μ €μž₯ν•˜κ³  κ·Έ μ£Όμ†Œλ₯Ό λ³€μˆ˜μ— ν• λ‹Ή 이후 같은 λ³€μˆ˜μ— μƒˆλ‘œμš΄ 데이터λ₯Ό μž¬ν• λ‹Ήν•˜κ²Œ 되면, κ·Έ μƒˆλ‘œμš΄ 데이터에 λŒ€ν•œ λ©”λͺ¨λ¦¬κ°€ μƒˆλ‘­κ²Œ 생기고 κ·Έ μ£Όμ†Œλ₯Ό λ³€μˆ˜μ— ν• λ‹Ήν•œλ‹€. 즉, 데이터 μžμ²΄κ°€ λ°”λ€ŒλŠ” 것이 μ•„λ‹ˆλΌ μƒˆλ‘œμš΄ 곡간에 μƒˆλ‘œμš΄ 데이터λ₯Ό λ„£κ³  κ·Έ μ£Όμ†Œλ₯Ό ν• λ‹Ήν•˜λ―€λ‘œ 이λ₯Ό λΆˆλ³€μ„±μ΄λΌκ³  ν•˜λ©° κΈ°μ‘΄ λ°μ΄ν„°μ˜ λ©”λͺ¨λ¦¬λŠ” 가비지 μ½œλ ‰ν„°μ— μ˜ν•΄ μ œκ±°λœλ‹€. κ·ΈλŸ¬λ‚˜ 객체의 경우, κ·Έ 객체 λ‚΄λΆ€μ˜ λ³€μˆ˜κ°€ μ‘΄μž¬ν•˜κ³  κ·Έ λ³€μˆ˜κ°€ λ°μ΄ν„°μ˜ μ£Όμ†Œλ₯Ό μ°Έμ‘°ν•˜κΈ°μ— κ·Έ λ³€μˆ˜μ˜ μ£Όμ†Œλ₯Ό μ°Έμ‘°ν•˜λŠ” κ°μ²΄λŠ” ν”„λ‘œνΌν‹°μ˜ 값을 μž¬ν• λ‹Ήν•΄λ„ ν”„λ‘œνΌν‹°μ˜ μ£Όμ†Œλ₯Ό κ·ΈλŒ€λ‘œ κ°–κ³  μžˆμœΌλ©΄μ„œ κ°’λ§Œ λ°”λ€Œκ²Œ λœλ‹€. 이λ₯Ό 가변성이라고 ν•œλ‹€.

ν˜„λŒ€ λͺ¨λ˜ μžλ°”μŠ€ν¬λ¦½νŠΈ λΆˆλ³€μ„±μ˜ μ€‘μš”μ„±

λΆˆλ³€μ„±μ΄ μ€‘μš”ν•œ μ΄μœ λŠ” λ‹¨μˆœν•˜κ²Œ μƒκ°ν•˜λ©΄ μ „μ—­λ³€μˆ˜λ₯Ό μ§€μ–‘ν•˜λŠ” μ΄μœ μ™€ λΉ„μŠ·ν•˜λ‹€.
μ½”λ“œμ˜ 길이와 λ³΅μž‘λ„κ°€ μ¦κ°€ν• μˆ˜λ‘ νŠΉμ • λ³€μˆ˜μ˜ 값을 λ°”κΎΈκ²Œ 될 μˆ˜λ„ 있고 이후 λ°œμƒν•œ μ—λŸ¬λ₯Ό μΆ”μ ν•˜κΈ°μ—λ„ λ²„κ±°μ›Œμ§„λ‹€.
μ–΄λ–€ 객체의 참쑰값을 μ—¬λŸ¬ κ³³μ—μ„œ κ³΅μœ ν•˜λ©΄ κ·Έ 값이 계속 λ³€κ²½λ˜μ–΄ μ˜λ„μΉ˜μ•Šμ€ 상황이 일어날 수 μžˆκΈ°μ— 객체의 λΆˆλ³€μ„±μ€ ꡉμž₯히 μ€‘μš”ν•˜λ‹€.

λ˜ν•œ λ¦¬μ•‘νŠΈμ—μ„œ μƒνƒœ(state)의 λΆˆλ³€μ„±μ„ μœ μ§€ν•΄μ•Όν•˜λŠ”λ°

  1. λ¦¬μ•‘νŠΈλŠ” 이전 μƒνƒœμ™€ λΉ„κ΅ν•΄μ„œ λ³€κ²½λœ λΆ€λΆ„λ§Œ λ¦¬λ Œλ”λ§ν•΄μ•Όν•˜κΈ°μ— 이전 μƒνƒœμ˜ 원본이 μœ μ§€κ°€ λ˜μ–΄μ•Όν•œλ‹€.(κ·Έλž˜μ•Ό 비ꡐ가λŠ₯)
  2. stateλŠ” 객체이기에 λ‚΄λΆ€ ν”„λ‘œνΌν‹°κ°’μ„ λ³€κ²½ν•˜λ©΄ 이전과 μ΄ν›„μ˜ 값이 λ‘˜λ‹€ λ³€κ²½λ˜μ–΄ λ³€κ²½λ˜μ—ˆμŒμ„ λ‚˜νƒ€λ‚  수 μ—†κ³  κ·Έλ ‡κ²Œ 되면 μƒνƒœκ°€ λ³€κ²½λ˜μ§€ μ•Šμ€ κ²ƒμœΌλ‘œ νŒλ‹¨ν•˜κ³  λ¦¬λžœλ”λ§λ˜μ§€ μ•ŠλŠ”λ‹€.

HTML μ‹œλ©˜ν‹± λ§ˆν¬μ—…

  • 의미λ₯Ό κ°–λŠ” λ§ˆν¬μ—…μ΄λΌλŠ” 뜻
  • λ‹¨μˆœνžˆ divλ₯Ό ν™œμš©ν•œ λ§ˆν¬μ—…μ΄ μ•„λ‹Œ, header, main, footerλ“±κ³Ό 같이 κ·Έ 역할을 λ‚˜νƒ€λ‚Ό 수 μžˆλŠ” λ§ˆν¬μ—…μ„ 지ν–₯ν•΄μ•Όν•œλ‹€.
    • 검색 엔진 μ΅œμ ν™”(SEO; Search Engine Optimization)
      • νƒœκ·Έμ˜ 의미(μ—­ν• )을 λΆ€μ—¬ν•¨μœΌλ‘œμ¨ 크둀링 μ‹œ 더 μœ μ˜λ―Έν•˜κ³  효율적인 방법이 κ°€λŠ₯
    • μ›Ή μ ‘κ·Όμ„±
      • μž₯애인, κ³ λ ΉμžλΆ„λ“€μ΄ 웹에 μ ‘κ·Ό μ‹œ μŒμ„± ν˜Ήμ€ ν‚€λ³΄λ“œλ§ŒμœΌλ‘œ μ ‘κ·Όν•  수 있게 ν•˜λŠ” μ„œλΉ„μŠ€ 등은 HTML νƒœκ·Έλ₯Ό 기반으둜 μž‘λ™ν•œλ‹€.
    • 가독성
      • 개발 μ‹œ 각각의 νƒœκ·Έλ“€μ— λŒ€ν•œ 가독성이 더 쒋아진닀.(μ›Ήμ˜ ꡬ쑰λ₯Ό νŒŒμ•…ν•˜κΈ° μš©μ΄ν•˜λ‹€.)

JavaScript λͺ¨λ“ˆ

  • λͺ¨λ“ˆ: λ‹¨μˆœνžˆ μƒκ°ν•˜λ©΄ μ½”λ“œ 쑰각, 점점 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 크기가 μ»€μ§€λ©΄μ„œ νŒŒμΌμ„ μ—¬λŸ¬ 개둜 λΆ„λ¦¬ν•˜κ²Œ λ˜λŠ”λ°, 이 λ•Œ λΆ„λ¦¬λœ 각각이 λͺ¨λ“ˆμ΄λ‹€.

    점점 슀크립트의 크기도 컀지고 λ³΅μž‘ν•΄μ§€λ©΄μ„œ μ½”λ“œλ₯Ό λͺ¨λ“ˆ λ‹¨μœ„λ‘œ μͺΌκ°œλŠ” 방법이 ν•„μš”ν•΄μ‘Œλ‹€.

    • λͺ¨λ“ˆμ€ 항상 use strict(엄격λͺ¨λ“œ)둜 μ‹€ν–‰λœλ‹€.
    • λͺ¨λ“ˆμ€ μžμ‹ λ§Œμ˜ λͺ¨λ“ˆ μŠ€μ½”ν”„κ°€ μ‘΄μž¬ν•œλ‹€.(μŠ€μ½”ν”„λ₯Ό κ³΅μœ ν•˜κΈ° μœ„ν•΄ export, import μ‚¬μš©)
    • λ™μΌν•œ λͺ¨λ“ˆμ€ μ—¬λŸ¬ κ³³μ—μ„œ μ‚¬μš©λ˜λ”λΌλ„ 졜초 호좜 μ‹œ 단 ν•œ 번만 μ‹€ν–‰λœλ‹€. μ‹€ν–‰ ν›„μ˜ κ²°κ³ΌλŠ” 이 λͺ¨λ“ˆμ„ κ°€μ Έκ°€λ €λŠ” λͺ¨λ“  λͺ¨λ“ˆμ— λ°˜μ˜λœλ‹€.
    • λͺ¨λ“ˆ μŠ€ν¬λ¦½νŠΈλŠ” 항상 지연 μ‹€ν–‰λœλ‹€. 마치 defer 속성을 뢙인 κ²ƒμ²˜λŸΌ!