About Frontend


About Frontend

πŸ“Œ CSR and SSR

  • SPA (Single Page Application)
    ν•˜λ‚˜μ˜ HTML νŒŒμΌμ„ 기반으둜 μžλ°”μŠ€ν¬λ¦½νŠΈλ₯Ό μ΄μš©ν•΄ λ™μ μœΌλ‘œ ν™”λ©΄μ˜ 컨텐츠λ₯Ό λ°”κΎΈλŠ” λ°©μ‹μ˜ μ›Ή μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜
    λžœλ”λ§ 방식 : CSR

  • MPA (Multiple page Application)
    μ‚¬μš©μžκ°€ νŽ˜μ΄μ§€λ₯Ό μš”μ²­ν• λ•Œλ§ˆλ‹€, μ›Ή μ„œλ²„κ°€ μš”μ²­ν•œ UI와 ν•„μš”ν•œ 데이터λ₯Ό HTML둜 νŒŒμ‹±ν•΄μ„œ λ³΄μ—¬μ£ΌλŠ” λ°©μ‹μ˜ μ›Ή μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜
    λžœλ”λ§ 방식 : SSR

  • CSR (Client Side Rendering) λΈŒλΌμš°μ €κ°€ μ„œλ²„μ— HTMLκ³Ό JS νŒŒμΌμ„ μš”μ²­ν•œ ν›„ λ‘œλ“œλ˜λ©΄ μ‚¬μš©μžμ˜ μƒν˜Έμž‘μš©μ— 따라 JSλ₯Ό μ΄μš©ν•΄μ„œ λ™μ μœΌλ‘œ λ Œλ”λ§ μ‹œν‚΄

πŸ‘

  • 첫 λ‘œλ”©λ§Œ 기닀리면 λ™μ μœΌλ‘œ λΉ λ₯΄κ²Œ λžœλ”λ§ 되기 λ•Œλ¬Έμ— μ‚¬μš©μž κ²½ν—˜μ΄(UX) μ’‹μŒ
  • μ„œλ²„μ—κ²Œ μš”μ²­ν•˜λŠ” νšŸμˆ˜κ°€ 훨씬 적기 λ•Œλ¬Έμ— μ„œλ²„μ˜ 뢀담이 λœν•¨

πŸ‘Ž

  • λͺ¨λ“  슀크립트 파일이 λ‘œλ“œλ  λ•ŒκΉŒμ§€ κΈ°λ‹€λ €μ•Ό 함
  • 검색 μ—”μ§„μ˜ 검색봇이 크둀링을 ν•˜λŠ”λ° 어렀움을 κ²ͺκΈ° λ•Œλ¬Έμ— 검색엔진 μ΅œμ ν™” λ¬Έμ œκ°€μžˆμŒ


  • SSR (Server Side Rendering)
    λΈŒλΌμš°μ €κ°€ νŽ˜μ΄μ§€λ₯Ό μš”μ²­ν• λ•Œλ§ˆλ‹€ν•΄λ‹Ή νŽ˜μ΄μ§€μ— κ΄€λ ¨λœ HTML, CSS, JS 파일 및 데이터λ₯Ό λ°›μ•„μ™€μ„œ λ Œλ”λ§ μ‹œν‚΄

πŸ‘

  • 초기 λ‘œλ”© 속도가 λΉ λ₯΄κΈ° λ•Œλ¬Έμ— μ‚¬μš©μžκ°€ 컨텐츠λ₯Ό λΉ λ₯΄κ²Œ λ³Ό 수 있음
  • JSλ₯Ό μ΄μš©ν•œ λ Œλ”λ§μ΄ μ•„λ‹ˆκΈ° λ•Œλ¬Έμ— 검색엔진 μ΅œμ ν™”κ°€ κ°€λŠ₯함

πŸ‘Ž

  • 맀번 νŽ˜μ΄μ§€λ₯Ό μš”μ²­ν•  λ•Œλ§ˆλ‹€ μƒˆλ‘œκ³ μΉ¨ 되기 λ•Œλ¬Έμ— μ‚¬μš©μž κ²½ν—˜μ΄ SPA에 λΉ„ν•΄μ„œ μ’‹μ§€ μ•ŠμŒ
  • μ„œλ²„μ— 맀번 μš”μ²­μ„ ν•˜κΈ° λ•Œλ¬Έμ— μ„œλ²„μ˜ λΆ€ν•˜κ°€ 컀짐


πŸ“Œ λΈŒλΌμš°μ €μ˜ λ Œλ”λ§ 원리

λ Œλ”λ§ 엔진이 HTML, CSS, JavaScript둜 λ Œλ”λ§ν• λ•Œ CRP(Critical Rendering Path) λΌλŠ” ν”„λ‘œμ„ΈμŠ€λ₯Ό μ‚¬μš©ν•˜λ©° λ‹€μŒ λ‹¨κ³„λ“€λ‘œ 이루어짐

  1. HTML νŒŒμ‹± ν›„, DOM(Document Object Model)트리 ꡬ좕
  2. CSS νŒŒμ‹± ν›„, CSSOM(CSS Object Model)트리 ꡬ좕
  3. Javascript μ‹€ν–‰
  4. DOMκ³Ό CSSOM을 μ‘°ν•©ν•˜μ—¬ λ Œλ”νŠΈλ¦¬(Render Tree) ꡬ좕
  5. 뷰포트 기반으둜 λ Œλ”νŠΈλ¦¬μ˜ 각 λ…Έλ“œκ°€ κ°€μ§€λŠ” μ •ν™•ν•œ μœ„μΉ˜μ™€ 크기 계산 (Layout/Reflow) 단계
  6. κ³„μ‚°ν•œ μœ„μΉ˜,크기λ₯Ό 기반으둜 화면에 κ·Έλ¦Ό

πŸ“Œ BOM vs DOM

  • BOM (Browser Object Model)
    λΈŒλΌμš°μ € μ°½μ΄λ‚˜ ν”„λ ˆμž„μ„ ν”„λ‘œκ·Έλž˜λ°μ μœΌλ‘œ μ œμ–΄ν•  수 있게 ν•΄μ£ΌλŠ” 객체λͺ¨λΈ
    λΈŒλΌμš°μ €μ˜ μƒˆ 창을 μ—΄κ±°λ‚˜ λ‹€λ₯Έ λ¬Έμ„œλ‘œ μ΄λ™ν•˜λŠ” λ“±μ˜ κΈ°λŠ₯을 μ‹€ν–‰μ‹œν‚¬ 수 있음

  • DOM (Document Object Model)
    μ›ΉνŽ˜μ΄μ§€λ₯Ό ν”„λ‘œκ·Έλž˜λ°μ μœΌλ‘œ μ œμ–΄ν•  수 있게 ν•΄μ£ΌλŠ” 객체λͺ¨λΈ, λ¬Έμ„œμ˜ ꡬ쑰λ₯Ό λ‚˜νƒ€λƒ„
    ex : Element, Document, HTMLDocument, Text, HTMLBodyElement …

    λ Œλ” νŠΈλ¦¬λŠ” μ‹œκ°μ  ꡬ쑰λ₯Ό λ‚˜νƒ€λ‚Έλ‹€!! β€˜display : none’일 경우 DOMμ—λŠ” μžˆμ§€λ§Œ λ Œλ”νŠΈλ¦¬μ—λŠ” ν• λ‹Ήλ˜μ§€ μ•ŠμŒ!

πŸ“Œ λͺ¨λ“ˆ(moudle)μ΄λž€?

μ—¬λŸ¬ κΈ°λŠ₯듀에 κ΄€ν•œ μ½”λ“œκ°€ λͺ¨μ—¬μžˆλŠ” ν•˜λ‚˜μ˜ 파일

  • μœ μ§€λ³΄μˆ˜μ„± : κΈ°λŠ₯듀이 λͺ¨λ“ˆν™”κ°€ 잘 λ˜μ–΄μžˆλ‹€λ©΄, μ˜μ‘΄μ„±μ„ 그만큼 쀄일 수 있기 λ•Œλ¬Έμ— μ–΄λ–€ κΈ°λŠ₯을 κ°œμ„ ν•œλ‹€κ±°λ‚˜ μˆ˜μ •ν•  λ•Œ 훨씬 νŽΈν•˜κ²Œ ν•  수 있음
  • λ„€μž„μŠ€νŽ˜μ΄μŠ€ν™” : μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ μ „μ—­λ³€μˆ˜λŠ” 전역곡간을 κ°€μ§€κΈ° λ•Œλ¬Έμ— μ½”λ“œμ˜ 양이 λ§Žμ•„μ§ˆμˆ˜λ‘ κ²ΉμΉ˜λŠ” λ„€μž„μŠ€νŽ˜μ΄μŠ€κ°€ λ§Žμ•„μ§ˆ 수 있음. κ·ΈλŸ¬λ‚˜ λͺ¨λ“ˆλ‘œ λΆ„λ¦¬ν•˜λ©΄ λͺ¨λ“ˆλ§Œμ˜ λ„€μž„μŠ€νŽ˜μ΄μŠ€λ₯Ό κ°–κΈ° λ•Œλ¬Έμ— κ·Έ λ¬Έμ œκ°€ 해결됨
  • μž¬μ‚¬μš©μ„± : λ˜‘κ°™μ€ μ½”λ“œλ₯Ό λ°˜λ³΅ν•˜μ§€ μ•Šκ³  λͺ¨λ“ˆλ‘œ λΆ„λ¦¬μ‹œμΌœμ„œ ν•„μš”ν•  λ•Œλ§ˆλ‹€ μ‚¬μš©ν•  수 있음

λͺ¨λ“ˆ λ²ˆλ“€λŸ¬

  • μˆ˜λ§Žμ€ λͺ¨λ“ˆλ“€μ˜ μˆœμ„œλ₯Ό μ–΄λ–»κ²Œ μ²˜λ¦¬ν•  것인가? (μ˜μ‘΄μ„± 처리)
  • λͺ¨λ“ˆμ΄ λ§Žμ•„μ§ˆμˆ˜λ‘ HTTP μš”μ²­μ΄ λ§Žμ•„μ§ˆν…λ° 이둜 μΈν•œ μ˜€λ²„ν—€λ“œλŠ” μ–΄λ–»κ²Œ ν•΄κ²°ν•  것인가?
  • ES6+ μŠ€νŽ™μ˜ μ½”λ“œλ₯Ό μ–΄λ–»κ²Œ μ²˜λ¦¬ν•  것인가?
    μœ„ λ¬Έμ œλ“€μ„ ν•΄κ²°ν•˜κΈ° μœ„ν•΄ λ“±μž₯ν•œ 것이 λͺ¨λ“ˆ λ²ˆλ“€λŸ¬(Module Bundler). 각각의 λͺ¨λ“ˆ μ˜μ‘΄μ„±μ„ ν•΄κ²°ν•˜μ—¬ ν•˜λ‚˜μ˜ μžλ°”μŠ€ν¬λ¦½νŠΈ 파일둜 λ§Œλ“œλŠ” 도ꡬ

트렌슀파일러

트랜슀파일링(Transpiling)μ΄λž€ νŠΉμ • μ–Έμ–΄λ‘œ μž‘μ„±λœ μ½”λ“œλ₯Ό λΉ„μŠ·ν•œ λ‹€λ₯Έ μ–Έμ–΄λ‘œ λ³€ν™˜μ‹œν‚€λŠ” ν–‰μœ„ λ₯Ό λ§ν•˜λ©° 이λ₯Ό ν•΄μ£ΌλŠ” 것이 트랜슀파일러(Transpiler)μž„

πŸ“Œ CI and CD

  • CI (Continuous Integration, 지속적 톡합)
    λΉŒλ“œμ™€ ν…ŒμŠ€νŠΈλ₯Ό μžλ™ν™”ν•΄μ„œ 곡유 μ €μž₯μ†Œμ— λ³‘ν•©μ‹œν‚€λŠ” ν”„λ‘œμ„ΈμŠ€
    gitκ³Ό 같은 버전관리 μ‹œμŠ€ν…œμ„ μ΄μš©ν•˜λ©΄ μ—¬λŸ¬λͺ…μ˜ κ°œλ°œμžκ°€ ν•˜λ‚˜μ˜ 곡유 μ €μž₯μ†Œλ₯Ό μ‚¬μš©ν•˜λŠ” κ²½μš°κ°€ λ§Žμ•„μ§. μ΄λ ‡κ²Œλ˜λ©΄ μƒˆλ‘œμš΄ μ½”λ“œμ˜ λ³€κ²½ 사항이 μ €μž₯μ†Œμ— ν†΅ν•©λ˜μ§€ μ•Šμ„ 경우 μ„œλ‘œ μΆ©λŒν•  수 있음. λ”°λΌμ„œ λΉŒλ“œ/ν…ŒμŠ€νŠΈ μžλ™ν™”λΆ€ν„° μ½”λ“œμ˜ 일관성을 μ œκ³΅ν•˜κΈ° λ•Œλ¬Έμ— μ§€μ†μ μœΌλ‘œ ν†΅ν•©ν•œλ‹€λŠ” μš©μ–΄ μ‚¬μš©

  • CD (Continuous Delivery/Deploy, 지속적 전달/배포)

    • 지속적 전달 : ν”„λ‘œλ•μ…˜ 배포λ₯Ό μœ„ν•œ μƒνƒœκ°€ 되고 배포 μžμ²΄λŠ” μˆ˜λ™μœΌλ‘œ μ‹€ν–‰
    • 지속적 배포 : ν”„λ‘œλ•μ…˜κΉŒμ§€ μžλ™μœΌλ‘œ 배포

πŸ“Œ CSS μ• λ‹ˆλ©”μ΄μ…˜ vs JS μ• λ‹ˆλ©”μ΄μ…˜

  • CSS μ• λ‹ˆλ©”μ΄μ…˜
    transition / animation 속성 μ‚¬μš©
    마우슀λ₯Ό μ˜¬λ Έμ„ λ•Œ, 메뉴 λ²„νŠΌμ˜ μ „ν™˜κ³Ό 같은 κ°„λ‹¨ν•˜κ²Œ μ²˜λ¦¬ν•˜λŠ” μ• λ‹ˆλ©”μ΄μ…˜μ˜ 경우 CSS μ‚¬μš©
    κ°„λ‹¨ν•œ μ• λ‹ˆλ©”μ΄μ…˜μ„ JS둜 κ΅¬ν˜„ν•˜λ©΄ λ Œλ”λ§ κ³Όμ •μ—μ„œ reflow 단계λ₯Ό λ°œμƒ μ‹œν‚€κΈ° λ•Œλ¬Έμ— μ• λ‹ˆλ©”μ΄μ…˜μ΄ λŠκΈ°λŠ” λŠλ‚Œμ„ 쀄 수 있음
    • λ°˜μ‘ν˜•μœΌλ‘œ μ• λ‹ˆλ©”μ΄μ…˜μ„ κ΅¬ν˜„ν•˜κΈ°μ— μœ μš©ν•œλ°, λ―Έλ””μ–΄ 쿼리둜 μ• λ‹ˆλ©”μ΄μ…˜μ„ μ μš©ν•˜λ©΄ 됨
    • μ™ΈλΆ€ 라이브러리λ₯Ό ν•„μš”λ‘œ ν•˜μ§€ μ•ŠμŒ
    • CSS μžμ²΄κ°€ μ„ μ–Έν˜•(declarative)이기 λ•Œλ¬Έμ— μ–΄λ–€ μš”μ†Œκ°€ μ• λ‹ˆλ©”μ΄μ…˜μ„ κ°€μ Έμ•Ό ν•œλ‹€λŠ” 직관적인 ν‘œν˜„μ΄ κ°€λŠ₯
    • 메인 μ“°λ ˆλ“œκ°€ μ•„λ‹Œ λ³„λ„μ˜ 컴포지터 μ“°λ ˆλ“œ(Compositor Thread)μ—μ„œ κ·Έλ €μ§€κΈ° λ•Œλ¬Έμ— 메인 μ“°λ ˆλ“œμ—μ„œ μž‘μ—…ν•˜λŠ” JS보닀 효율적
  • JS μ• λ‹ˆλ©”μ΄μ…˜
    CSS둜 μ²˜λ¦¬ν•˜κΈ°λŠ” λ³΅μž‘ν•˜κ³  무거운 μ• λ‹ˆλ©”μ΄μ…˜ μž‘μ—…λ“€μ„ 효율적이고, μ„Έλ°€ν•˜κ²Œ 닀루기 μœ„ν•΄ μ‚¬μš©
  • μš”μ†Œμ˜ μŠ€νƒ€μΌμ΄ λ³€ν•˜λŠ” μˆœκ°„λ§ˆλ‹€ μ œμ–΄ν•  수 있기 λ•Œλ¬Έμ— μ• λ‹ˆλ©”μ΄μ…˜μ˜ μ„Έλ°€ν•œ ꡬ성이 κ°€λŠ₯해짐
  • GPUλ₯Ό ν†΅ν•œ ν•˜λ“œμ›¨μ–΄ 가속을 μ œμ–΄ν•  수 있음. μ΄λŠ” CSS의 νŠΉμ • μ†μ„±μœΌλ‘œ μΈν•œ 가속을 λ§‰μ•„μ£ΌλŠ”λ°, ν•˜λ“œμ›¨μ–΄ 가속이 λͺ¨λ°”μΌμ—μ„œ μ„±λŠ₯μ €ν•˜λ₯Ό λ°œμƒμ‹œν‚¬ 수 있기 λ•Œλ¬Έμ— 이런 면에선 μ’‹μŒ
  • λΈŒλΌμš°μ € ν˜Έν™˜μ„± μΈ‘λ©΄μ—μ„œ transition / animation 속성보닀 뛰어남

πŸ“Œ DOCTYPE

Document Type의 μ•½μžλ‘œ, HTML이 μ–΄λ–€ λ²„μ „μœΌλ‘œ μž‘μ„±λ˜μ—ˆλŠ”μ§€ 미리 μ„ μ–Έν•˜μ—¬ μ›ΉλΈŒλΌμš°μ €κ°€ λ‚΄μš©μ„ μ˜¬λ°”λ‘œ ν‘œμ‹œν•  수 μžˆλ„λ‘ ν•΄μ£ΌλŠ” 것
<!DOCTYPE> 으둜 μ„ μ–Έν•˜λŠ”λ° 이걸 ν•΄μ£Όμ§€ μ•ŠμœΌλ©΄ ν˜Έν™˜ λͺ¨λ“œ(quirks mode) 둜 λ™μž‘ν•¨. ν˜Έν™˜ λͺ¨λ“œμ˜ 경우 각 λΈŒλΌμš°μ €λ§ˆλ‹€ λ¬Έμ„œλ₯Ό λ‚˜νƒ€λ‚΄λŠ” 방식이 λ‹€λ₯΄κΈ° λ•Œλ¬Έμ— 크둜슀 λΈŒλΌμš°μ§• μ΄μŠˆκ°€ 훨씬 μ‹¬ν•΄μ§€κ²Œ 됨

  • DTD(Document Type Definition)
    DTD(Document Type Definition)λž€ λ¬Έμ„œ ν˜•μ‹μ„ μ •μ˜ν•΄λ†“μ€ κ²ƒμœΌλ‘œ DOCTYPE을 λͺ…μ‹œν•  λ•Œ μ‚¬μš©. 즉, HTML λ¬Έμ„œκ°€ μ–΄λ–€ λ¬Έμ„œ ν˜•μ‹μ„ λ”°λ₯΄λŠ”μ§€ DOCTYPEμ—μ„œ DTDλ₯Ό μ§€μ •ν•˜λŠ” 것

  • ν‘œμ€€λͺ¨λ“œ ν˜Έν™˜λͺ¨λ“œ
    λΈŒλΌμš°μ €λŠ” HTML λ¬Έμ„œκ°€ DOCTYPE을 κ°€μ§€κ³  μžˆμ§€ μ•ŠμœΌλ©΄ ν˜Έν™˜λͺ¨λ“œλ‘œ λ Œλ”λ§μ„ ν•˜κ³ , κ°€μ§€κ³  μžˆλ‹€λ©΄ μ£Όμ–΄μ§„ DOCTYPE에 맞게 ν‘œμ€€λͺ¨λ“œλ‘œ λ Œλ”λ§ν•¨
    ν˜Έν™˜λͺ¨λ“œλ‘œ λ Œλ”λ§μ„ ν•˜κ²Œ 되면 였래된 μ›ΉνŽ˜μ΄μ§€λ“€μ„ μ΅œμ‹ λ²„μ „μ˜ ν”„λΌμš°μ €μ—μ„œλ„ κΉ¨μ§€μ§€ μ•Šκ²Œ ν•˜κΈ° λ•Œλ¬Έμ— 각 λΈŒλΌμš°μ €λ§ˆλ‹€ λ‹€λ₯΄κ²Œ 보일 수 있음

Β cookielocal storagesession storage
μƒμ„±μžν΄λΌμ΄μ–ΈνŠΈ/μ„œλ²„ν΄λΌμ΄μ–ΈνŠΈν΄λΌμ΄μ–ΈνŠΈ
μ§€μ†μ‹œκ°„μ„€μ • 여뢀에 따름λͺ…μ‹œμ μœΌλ‘œ μ§€μšΈλ•ŒκΉŒμ§€νƒ­ / μœˆλ„μš° 닫을 λ•ŒκΉŒμ§€
μš©λŸ‰5KB5MB / 10MB5MB
μ„œλ²„μ™€μ˜ 톡신OXX
취약점XSS / CSRF 곡격XSS 곡격XSS 곡격

πŸ“Œ script, script async, script defer

  • <script> : HTML νŒŒμ‹±μ΄ μ€‘λ‹¨λ˜κ³  μ¦‰μ‹œ μŠ€ν¬λ¦½νŠΈκ°€ λ‘œλ“œλ˜λ©° λ‘œλ“œλœ μŠ€ν¬λ¦½νŠΈκ°€ μ‹€ν–‰λ˜κ³  νŒŒμ‹±μ΄ 재개됨
  • <script async> : HTML νŒŒμ‹±κ³Ό λ³‘λ ¬μ μœΌλ‘œ λ‘œλ“œκ°€ λ˜λŠ”λ°, 슀크립트λ₯Ό μ‹€ν–‰ν•  λ•ŒλŠ” νŒŒμ‹±μ΄ 쀑단됨. ꡬ글 μ• λ„λ¦¬ν‹±μŠ€μ™€ 같이 λ‹€λ₯Έ μŠ€ν¬λ¦½νŠΈκ°€ μ˜μ‘΄ν•˜μ§€ μ•ŠλŠ” λ…μžμ μΈ 슀크립트λ₯Ό λ‘œλ“œν•  λ•Œ 적합
  • <script defer> : HTML νŒŒμ‹±κ³Ό λ³‘λ ¬μ μœΌλ‘œ λ‘œλ“œκ°€ λ˜λŠ”λ°, νŒŒμ‹±μ΄ λλ‚˜κ³  슀크립트λ₯Ό λ‘œλ“œν•¨. 보톡 <body> νƒœκ·Έ 직전에

πŸ“Œ μ‹œλ©˜ν‹± λ§ˆν¬μ—…

➜ 의미λ₯Ό 잘 μ „λ‹¬ν•˜λ„λ‘ λ¬Έμ„œλ₯Ό μž‘μ„±ν•˜λŠ” 것
μ‹œλ§¨ν‹± λ§ˆν¬μ—…μ„ ν•˜κΈ° μœ„ν•΄μ„  각 νƒœκ·Έλ₯Ό κ·Έ μš©λ„μ— 맞게 μ‚¬μš©ν•΄μ•Όν•¨

  • 헀더/푸터에 <header> 와 <footer> μ‚¬μš©
  • 메인 컨텐츠에 <main> κ³Ό <section> μ‚¬μš©
  • 독립적인 컨텐츠에 <article> μ‚¬μš©
  • μ΅œμƒμœ„ 제λͺ©μœΌλ‘œ <h1> μ‚¬μš©
  • μˆœμ„œκ°€ μ—†λŠ” λͺ©λ‘μœΌλ‘œ <ul> κ³Ό <li> μ‚¬μš©
  • λ‚΄λΉ„κ²Œμ΄μ…˜μ— <nav> μ‚¬μš©

이런 μ‹μœΌλ‘œ νƒœκ·Έκ°€ κ°€μ§€κ³  μžˆλŠ” μ˜λ―Έμ— 맞게 μ‚¬μš©ν•˜λŠ” 것인데, 이런 점 이외에도 CSS μŠ€νƒ€μΌμ„ λͺ…μ‹œν•˜λŠ” νƒœκ·Έλ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” 것 λ˜ν•œ μ‹œλ§¨ν‹± λ§ˆν¬μ—…μ˜ ν•œ μ’…λ₯˜μž„. 즉, νƒœκ·Έκ°€ κ°€μ§€λŠ” 의미 μžμ²΄κ°€ μŠ€νƒ€μΌμ΄λΌλ©΄ μ΄λŠ” λ§ˆν¬μ—… μžμ²΄κ°€ μŠ€νƒ€μΌμ„ κ°–λŠ” 것이기 λ•Œλ¬Έμ— μ‹œλ§¨ν‹± λ§ˆν¬μ—…μ— μ ν•©ν•˜μ§€ μ•ŠμŒ

예λ₯Ό λ“€μ–΄, λ™μΌν•œ 효과λ₯Ό λΆ€μ—¬ν•˜λŠ” <strong> κ³Ό <b> νƒœκ·Έκ°€ μžˆλ‹€. λ‘˜μ€ λ™μΌν•˜κ²Œ κΈ€μžμƒ‰μ„ μ§„ν•˜κ²Œ ν•˜μ§€λ§Œ <b> νƒœκ·Έμ˜ κ²½μš°λŠ” κ·Έ μžμ²΄κ°€ β€œbold” 의 약어이기 λ•Œλ¬Έμ— νƒœκ·Έ μžμ²΄κ°€ μŠ€νƒ€μΌμ„ κ°€μ§„λ‹€κ³  ν•  수 μžˆλ‹€. ν•˜μ§€λ§Œ <strong> 의 κ²½μš°λŠ” β€œκ·Έ μ•ˆμ˜ λ‚΄μš©μ΄ λ‹€λ₯Έ λ‚΄μš©λ³΄λ‹€ 더 κ°•μ‘°λ˜μ–΄μ•Ό ν•œλ‹€β€ λΌλŠ” 의미λ₯Ό κ°€μ§€κΈ° λ•Œλ¬Έμ— μ‹œλ§¨ν‹± λ§ˆν¬μ—…μ— 더 μ ν•©ν•˜λ‹€.

πŸ‘

  • 검색엔진이 μ‹œλ§¨ν‹± νƒœκ·Έλ₯Ό μ€‘μš”ν•œ ν‚€μ›Œλ“œλ‘œ κ°„μ£Όν•˜κΈ° λ•Œλ¬Έμ— 검색엔진 μ΅œμ ν™”(SEO)에 μœ λ¦¬ν•¨
  • μ›Ή μ ‘κ·Όμ„± μΈ‘λ©΄μ—μ„œ, μ‹œκ°μž₯μ• κ°€ μžˆλŠ” μ‚¬μš©μžλ‘œ ν•˜μ—¬κΈˆ κ·Έ 의미λ₯Ό 훨씬 잘 νŒŒμ•…ν•  수 있음
  • λ‹¨μˆœν•œ div , span 으둜 λ‘˜λŸ¬μ‹ΈμΈ μš”μ†Œλ“€λ³΄λ‹€ μ½”λ“œλ₯Ό λ³Ό λ•Œ 가독성이 더 μ’‹μŒ





Β© 2021.01. by gayeon

Powered by gayeon