posts

πŸ“˜ React ν”„λ‘œμ νŠΈ 퍼블리셔-ν”„λ‘ νŠΈ ν˜‘μ—… μ „λž΅ κ°€μ΄λ“œ

Oct 1, 2025 updated Oct 1, 2025 cssproduct


πŸ“‘ λͺ©μ°¨

  1. ν˜‘μ—… ꡬ쑰 κ°œμš”
  2. ν˜‘μ—… 방식별 ν•΄κ²°μ•ˆ
    2-1. 퍼블리셔 독립 μž‘μ—… 방식
    2-2. 퍼블리셔가 λ¦¬μ•‘νŠΈ ν™˜κ²½μ—μ„œ μž‘μ—…
    2-3. ν•˜μ΄λΈŒλ¦¬λ“œ 방식 (μΆ”μ²œ)
  3. 각 ν•΄κ²°μ•ˆμ˜ 문제점 뢄석
  4. κ°€μž₯ λ‚˜μ€ 방법 μ„ μ •
  5. μž‘μ—… μ˜μ—­ 및 μ±…μž„ 뢄리
  6. ν˜‘μ—… κ°€μ΄λ“œλΌμΈ
  7. νΌλΈ”λ¦¬μ…”μ˜ μƒνƒœ ν‘œν˜„ 방식
  8. 퍼블리셔 μž‘μ—… 원칙
  9. JSκ°€ 많이 ν•„μš”ν•œ μ»΄ν¬λ„ŒνŠΈμ— λŒ€ν•œ λŒ€μ‘ μ „λž΅

1. ν˜‘μ—… ꡬ쑰 κ°œμš”

ꡬ뢄 μ„€λͺ…
ν”„λ‘œμ νŠΈ ꡬ쑰 퍼블리셔와 ν”„λ‘ νŠΈκ°€ λ‹€λ₯Έ νŒ€μœΌλ‘œ λΆ„λ¦¬λ˜μ–΄ 있음
λͺ©μ  λΉ λ₯΄κ³  μ •ν™•ν•œ UI κ΅¬ν˜„ + κΈ°λŠ₯/μœ μ§€λ³΄μˆ˜ νš¨μœ¨μ„± 확보
μ „μ œ νΌλΈ”λ¦¬μ…”λŠ” HTML/CSS 쀑심, JSλŠ” ν”„λ‘ νŠΈ λ‹΄λ‹Ή

2. ν˜‘μ—… 방식별 ν•΄κ²°μ•ˆ

2-1. 퍼블리셔가 jQuery 기반으둜 독립 μž‘μ—… ν›„ ν”„λ‘ νŠΈκ°€ λ§ˆμ΄κ·Έλ ˆμ΄μ…˜

ν•­λͺ© μ„€λͺ…
퍼블리셔 μž‘μ—… HTML/CSS/jQuery μž‘μ—…
ν”„λ‘ νŠΈ μž‘μ—… λ§ˆν¬μ—…, μŠ€νƒ€μΌ, JS λͺ¨λ‘ React둜 λ³€ν™˜

2-2. 퍼블리셔가 React ν”„λ‘œμ νŠΈμ—μ„œ JSX/CSS둜 직접 μž‘μ—…

ν•­λͺ© μ„€λͺ…
퍼블리셔 μž‘μ—… JSX ꡬ쑰 및 CSS μž‘μ„±
ν”„λ‘ νŠΈ μž‘μ—… κΈ°λŠ₯ 보강, μƒνƒœ 관리, ꡬ쑰 λ¦¬νŒ©ν† λ§

2-3. ν•˜μ΄λΈŒλ¦¬λ“œ 방식 (βœ… μΆ”μ²œ 방식)

ν•­λͺ© μ„€λͺ…
퍼블리셔 μž‘μ—… 정적인 HTML/CSS만 μž‘μ„±, μƒνƒœ class ν™œμš©
ν”„λ‘ νŠΈ μž‘μ—… JSX λ³€ν™˜, μƒνƒœ 바인딩, 라이브러리 연동, 둜직 κ΅¬ν˜„

3. 각 ν•΄κ²°μ•ˆμ˜ 문제점 뢄석

방식 μ£Όμš” 문제점 μš”μ•½
2-1 λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ 곡수 큼, 라이브러리 좩돌, μž¬μž‘μ—… 많음
2-2 React λ―Έμˆ™μœΌλ‘œ μΈν•œ λ¦¬νŒ©ν† λ§ ν•„μš”, μ½”λ“œ ν’ˆμ§ˆ λΆˆκ· ν˜•
2-3 (μΆ”μ²œ) νΌλΈ”λ¦¬μ…”μ—κ²Œ JS μ œν•œμ΄ μžˆμ§€λ§Œ, ν˜‘μ—… 효율/ν’ˆμ§ˆ μ΅œμ ν™” κ°€λŠ₯

4. κ°€μž₯ λ‚˜μ€ 방법 μ„ μ •

βœ… ν•˜μ΄λΈŒλ¦¬λ“œ 방식

  • νΌλΈ”λ¦¬μ…”λŠ” λ§ˆν¬μ—…κ³Ό μŠ€νƒ€μΌμ— 집쀑
  • ν”„λ‘ νŠΈλŠ” κΈ°λŠ₯κ³Ό ꡬ쑰λ₯Ό μ œμ–΄
    β†’ λΆ„μ—… 효율 μ΅œμ ν™” + μœ μ§€λ³΄μˆ˜ 유리

5. μž‘μ—… μ˜μ—­ 및 μ±…μž„ 뢄리

ν•­λͺ© 퍼블리셔 μž‘μ—… λ²”μœ„ ν”„λ‘ νŠΈ μž‘μ—… λ²”μœ„
λ§ˆν¬μ—… 정적 ꡬ쑰 μž‘μ„± (div, ul, li, class λ“±) JSX λ³€ν™˜, ꡬ쑰 뢄리
μŠ€νƒ€μΌλ§ SCSS/CSS μž‘μ„±, μƒνƒœ class λͺ…μ‹œ (.active, .open) λͺ¨λ“ˆν™”, μŠ€νƒ€μΌ μ΅œμ ν™”
μƒνƒœ ν‘œν˜„ μƒνƒœ class 및 μ£Όμ„μœΌλ‘œ μƒνƒœ ꡬ뢄 useState, useEffect둜 μƒνƒœ μ œμ–΄
라이브러리 μ‚¬μš© ❌ μ‚¬μš© μ•ˆ 함 (예: Swiper λ“±) βœ… React용 라이브러리 연동
DOM 이벀트/둜직 ❌ jQuery, addClass λ“± κΈˆμ§€ βœ… 이벀트 ν•Έλ“€λŸ¬, λ“œλž˜κ·Έ λ“± 직접 κ΅¬ν˜„
ν…ŒμŠ€νŠΈ 및 QA κΈ°μ€€ μ‹œκ°μ  확인 (λ””μžμΈ κΈ°μ€€) κΈ°λŠ₯ ν…ŒμŠ€νŠΈ 및 Storybook λ“±

6. ν˜‘μ—… κ°€μ΄λ“œλΌμΈ

퍼블리셔 κ°€μ΄λ“œ

  • 정적인 HTML/CSS만 μž‘μ„±
  • JS λ‘œμ§μ€ μž‘μ„± κΈˆμ§€ (jQuery 포함)
  • .active, .open, .hidden λ“± μƒνƒœ class λͺ…μ‹œ
  • μƒνƒœλ³„ λ§ˆν¬μ—…μ„ λΆ„λ¦¬ν•˜κ±°λ‚˜ μ£Όμ„μœΌλ‘œ ν‘œν˜„
  • 넀이밍 μ»¨λ²€μ…˜ μ€€μˆ˜ (예: BEM)

ν”„λ‘ νŠΈ κ°€μ΄λ“œ

  • JSX μ»΄ν¬λ„ŒνŠΈν™”
  • μƒνƒœ 바인딩 (useState)
  • 라이브러리 연동 (예: swiper/react)
  • CSS-in-JS, CSS Module λ“±μœΌλ‘œ μŠ€νƒ€μΌ ꡬ쑰화

7. νΌλΈ”λ¦¬μ…”μ˜ μƒνƒœ ν‘œν˜„ 방식

방식 μ„€λͺ…
βœ… μƒνƒœ 포함 class λͺ…μ‹œ .active, .open, .hidden, .disabled λ“± μ‚¬μš©
βœ… μƒνƒœλ³„ λ§ˆν¬μ—… μƒ˜ν”Œ 뢄리 dropdown.html, dropdown-open.html λ“±
βœ… μ£Όμ„μœΌλ‘œ μƒνƒœ ꡬ뢄 <!-- μƒνƒœ: λ“œλž˜κ·Έ 쀑 -->
βœ… μŠ€νƒ€μΌμ€ μƒνƒœ class 기반 μž‘μ„± CSS만으둜 display, transform, opacity λ“± μƒνƒœ κ΅¬ν˜„

8. 퍼블리셔 μž‘μ—… 원칙

원칙 번호 λ‚΄μš©
1 JS μ‚¬μš© κΈˆμ§€ (jQuery, onclick, addClass λ“±)
2 μƒνƒœλŠ” class λ˜λŠ” μ£Όμ„μœΌλ‘œ μ‹œκ°μ μœΌλ‘œ ꡬ뢄
3 μ»΄ν¬λ„ŒνŠΈ λ‹¨μœ„ λ§ˆν¬μ—… (e.g. Card, Dropdown) μž‘μ„±
4 넀이밍 μ»¨λ²€μ…˜ 일관성 μœ μ§€ (BEM, kebab-case λ“±)
5 μƒνƒœ μ‹œλ‚˜λ¦¬μ˜€λŠ” 주석 λ˜λŠ” 별도 λ¬Έμ„œλ‘œ 제곡

9. JSκ°€ 많이 ν•„μš”ν•œ μ»΄ν¬λ„ŒνŠΈ λŒ€μ‘ μ „λž΅

μ»΄ν¬λ„ŒνŠΈ 퍼블리셔 μ—­ν•  ν”„λ‘ νŠΈ μ—­ν• 
λ°”ν…€ μ‹œνŠΈ .bt-sheet, .is-open, .dragger ꡬ쑰 제곡 μ—΄κΈ°/λ‹«κΈ° μƒνƒœ, λ“œλž˜κ·Έ κ΅¬ν˜„
λ“œλ‘­λ‹€μš΄ .open, .closed μƒνƒœ class 제곡 isOpen μƒνƒœ μ „ν™˜ 및 ν‚€λ³΄λ“œ μ ‘κ·Όμ„± κ΅¬ν˜„
Swiper .swiper, .swiper-slide λ§ˆν¬μ—… 제곡 swiper/react μ‚¬μš©, μ˜΅μ…˜ 연동