10 Tips For Building SSR/HDA applications

Carson Gross

전톡적인 μ„œλ²„μ‚¬μ΄λ“œ λ Œλ”λ§(SSR) λ°©μ‹μœΌλ‘œ μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ΅¬μΆ•ν•˜κ±°λ‚˜, λ‹€λ₯Έ 말둜 ν•˜μ΄νΌλ―Έλ””μ–΄ 기반 μ• ν”Œλ¦¬μΌ€μ΄μ…˜(HDA)을 κ΅¬μΆ•ν•˜λŠ” 것은 React와 같은 μ‹±κΈ€ νŽ˜μ΄μ§€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜(SPA) ν”„λ ˆμž„μ›Œν¬λ₯Ό μ‚¬μš©ν•˜μ—¬ μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ°œλ°œν•˜λŠ” 것과 λΉ„κ΅ν–ˆμ„ λ•Œ μ‚¬κ³ λ°©μ‹μ˜ μ „ν™˜μ΄ ν•„μš”ν•©λ‹ˆλ‹€.

SPA 개발 방식에 μ΅μˆ™ν•œ μƒνƒœλ‘œ 이 개발 μŠ€νƒ€μΌμ— μ ‘κ·Όν•˜λ©΄, 이 νŠΉμ • μ•„ν‚€ν…μ²˜ μ„ νƒμ˜ λ§Žμ€ μž₯점을 λ†“μΉ˜κ³  μ’Œμ ˆν•˜κ²Œ 될 κ°€λŠ₯성이 ν½λ‹ˆλ‹€.

μ΄λŸ¬ν•œ μ ‘κ·Ό λ°©μ‹μ˜ 강점을 μ΅œλŒ€ν•œ ν™œμš©ν•˜κ³  약점을 μ΅œμ†Œν™”ν•  수 μžˆλ„λ‘ 사고방식을 μ›ν™œν•˜κ²Œ μ „ν™˜ν•˜λŠ” 데 도움이 λ˜λŠ” 10가지 νŒμ„ μ†Œκ°œν•©λ‹ˆλ‹€:

#팁 1: μ„œλ²„μ‚¬μ΄λ“œμ˜ 강점을 μ΅œλŒ€ν•œ ν™œμš©ν•˜λΌ

ν•˜μ΄νΌλ―Έλ””μ–΄ 기반 μ ‘κ·Ό λ°©μ‹μ˜ 큰 μž₯점은 μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ ꡬ좕할 λ•Œ μ„œλ²„μ‚¬μ΄λ“œ ν™˜κ²½μ΄ 훨씬 더 μ€‘μš”ν•΄μ§„λ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. JSON만 μƒμ„±ν•˜λŠ” 것이 μ•„λ‹ˆλΌ, λ°±μ—”λ“œλŠ” μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μ‚¬μš©μž κ²½ν—˜μ—μ„œ μ€‘μš”ν•œ ꡬ성 μš”μ†Œκ°€ λ©λ‹ˆλ‹€.

이 λ•Œλ¬Έμ— μ„œλ²„μ‚¬μ΄λ“œμ—μ„œ μ œκ³΅ν•˜λŠ” κΈ°λŠ₯을 깊이 νƒκ΅¬ν•˜λŠ” 것이 μ€‘μš”ν•©λ‹ˆλ‹€. λ§Žμ€ 였래된 μ›Ή ν”„λ ˆμž„μ›Œν¬λŠ” HTML을 μƒμ„±ν•˜λŠ” 데 μžˆμ–΄ 맀우 κΉŠμ€ κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, μ„œλ²„μ‚¬μ΄λ“œ 캐싱과 같은 κΈ°λŠ₯은 λΉ λ₯΄κ³  λ°˜μ‘μ΄ 쒋은 μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜κ³Ό 느린 μ‚¬μš©μž κ²½ν—˜μ˜ 차이λ₯Ό λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€.

μ‚¬μš© κ°€λŠ₯ν•œ λͺ¨λ“  도ꡬλ₯Ό λ°°μš°λŠ” 데 μ‹œκ°„μ„ νˆ¬μžν•˜μ‹­μ‹œμ˜€.

일반적인 κ·œμΉ™μ€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 응닡 μ‹œκ°„μ΄ 100ms μ΄ν•˜κ°€ λ˜λ„λ‘ ν•˜λŠ” 것이며, μ„±μˆ™ν•œ μ„œλ²„μ‚¬μ΄λ“œ ν”„λ ˆμž„μ›Œν¬λŠ” 이λ₯Ό λ‹¬μ„±ν•˜λŠ” 데 도움이 λ˜λŠ” 도ꡬλ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.

#팁 2: μ„œλ²„μ—μ„œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ΅¬μ„±ν•˜λΌ

μ„œλ²„μ‚¬μ΄λ“œ ν™˜κ²½μ€ μ½”λ“œλ₯Ό 적절히 κ΅¬μ„±ν•˜λŠ” 맀우 μ„±μˆ™ν•œ λ©”μ»€λ‹ˆμ¦˜μ„ μ œκ³΅ν•©λ‹ˆλ‹€. λŒ€λΆ€λΆ„μ˜ ν™˜κ²½μ—μ„œλŠ” λͺ¨λΈ/λ·°/컨트둀러(MVC) νŒ¨ν„΄μ΄ 잘 κ°œλ°œλ˜μ–΄ 있으며, λͺ¨λ“ˆ, νŒ¨ν‚€μ§€ λ“±μ˜ λ„κ΅¬λŠ” μ½”λ“œλ₯Ό μ‘°μ§ν™”ν•˜λŠ” 데 νƒμ›”ν•œ 방법을 μ œκ³΅ν•©λ‹ˆλ‹€.

SPA의 μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€κ°€ 일반적으둜 μ»΄ν¬λ„ŒνŠΈ λ₯Ό 톡해 κ΅¬μ„±λ˜λŠ” 반면, ν•˜μ΄νΌλ―Έλ””μ–΄ 기반 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ€ 일반적으둜 ν…œν”Œλ¦Ώ 포함 을 톡해 κ΅¬μ„±λ©λ‹ˆλ‹€. μ„œλ²„μ‚¬μ΄λ“œ ν…œν”Œλ¦Ώμ€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ HTML λ Œλ”λ§ μš”κ΅¬μ— 따라 λΆ„λ¦¬λ˜μ–΄ ν•„μš”μ— 따라 μ„œλ‘œ ν¬ν•¨λ©λ‹ˆλ‹€. μ΄λŠ” μ»΄ν¬λ„ŒνŠΈ 기반 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ 찾을 수 μžˆλŠ” 것보닀 더 적고 더 덩어리진 파일둜 μ΄μ–΄μ§€λŠ” κ²½ν–₯이 μžˆμŠ΅λ‹ˆλ‹€.

또 λ‹€λ₯Έ μœ μš©ν•œ κΈ°μˆ λ‘œλŠ” ν…œν”Œλ¦Ώ ν”„λž˜κ·Έλ¨ΌνŠΈλ₯Ό λ“€ 수 μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό 톡해 ν…œν”Œλ¦Ώ 파일의 μΌλΆ€λ§Œ λ Œλ”λ§ν•  수 있으며, μ΄λŠ” μ„œλ²„μ‚¬μ΄λ“œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— ν•„μš”ν•œ ν…œν”Œλ¦Ώ 파일의 수λ₯Ό λ”μš± μ€„μ—¬μ€λ‹ˆλ‹€.

#팁 3: API μ—”λ“œν¬μΈνŠΈλ₯Ό νŠΉν™”ν•˜λΌ

JSON API와 달리, ν•˜μ΄νΌλ―Έλ””μ–΄ 기반 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μœ„ν•΄ μƒμ„±ν•œ ν•˜μ΄νΌλ―Έλ””μ–΄ APIλŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ UI μš”κ΅¬ 사항에 νŠΉν™”λœ μ—”λ“œν¬μΈνŠΈλ₯Ό 포함해야 ν•©λ‹ˆλ‹€.

ν•˜μ΄νΌλ―Έλ””μ–΄ APIλŠ” 일반 λͺ©μ μ˜ ν΄λΌμ΄μ–ΈνŠΈκ°€ μ†ŒλΉ„ν•˜λ„λ‘ μ„€κ³„λ˜μ§€ μ•Šμ•˜κΈ° λ•Œλ¬Έμ—, 이λ₯Ό μΌλ°˜ν™”ν•˜λ €λŠ” 압박을 내렀놓고 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— ν•„μš”ν•œ μ½˜ν…μΈ λ₯Ό ꡬ체적으둜 생성할 수 μžˆμŠ΅λ‹ˆλ‹€. μ—”λ“œν¬μΈνŠΈλŠ” 도메인 λͺ¨λΈμ— λŒ€ν•œ 일반적인 데이터 μ ‘κ·Ό λͺ¨λΈμ„ μœ„ν•œ 것이 μ•„λ‹ˆλΌ, μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ UI/UX μš”κ΅¬ 사항을 μ§€μ›ν•˜λ„λ‘ μ΅œμ ν™”λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.

#팁 4: API μ—”λ“œν¬μΈνŠΈλ₯Ό 적극적으둜 λ¦¬νŒ©ν† λ§ν•˜λΌ

κ΄€λ ¨λœ 팁으둜, ν•˜μ΄νΌλ―Έλ””μ–΄ 기반 APIλ₯Ό μ‚¬μš©ν•˜λŠ” 경우, JSON API 기반 SPAλ₯Ό μž‘μ„±ν•  λ•Œ κ°•λ ₯히 ꢌμž₯λ˜μ§€ μ•ŠλŠ” λ°©μ‹μœΌλ‘œ APIλ₯Ό 적극적으둜 λ¦¬νŒ©ν† λ§ν•  수 μžˆμŠ΅λ‹ˆλ‹€. ν•˜μ΄νΌλ―Έλ””μ–΄ 기반 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μƒνƒœμ˜ μ—”μ§„μœΌλ‘œμ„œμ˜ ν•˜μ΄νΌλ―Έλ””μ–΄(HATEOAS)λ₯Ό μ‚¬μš©ν•˜κΈ° λ•Œλ¬Έμ—, μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ 개발되고 μ‚¬μš© 사둀가 변경됨에 따라 API의 λͺ¨μ–‘을 λ³€κ²½ν•˜λŠ” 것이 κ°€λŠ₯ν•˜λ©°, μ‹€μ œλ‘œ ꢌμž₯λ©λ‹ˆλ‹€.

ν•˜μ΄νΌλ―Έλ””μ–΄ μ ‘κ·Ό λ°©μ‹μ˜ 큰 μž₯점은 APIλ₯Ό 버전 κ΄€λ¦¬ν•˜κ±°λ‚˜ λ¬Έμ„œν™”ν•  ν•„μš” 없이 μ‹œκ°„μ΄ 지남에 따라 μƒˆλ‘œμš΄ μš”κ΅¬ 사항에 맞게 μ™„μ „νžˆ μž¬κ΅¬μ„±ν•  수 μžˆλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.

#팁 5: 데이터 μŠ€ν† μ–΄μ— λŒ€ν•œ 직접 접근을 ν™œμš©ν•˜λΌ

SPA μ ‘κ·Ό 방식을 μ‚¬μš©ν•˜μ—¬ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ ꡬ좕할 λ•Œ, 데이터 μŠ€ν† μ–΄λŠ” 일반적으둜 JSON API 뒀에 μœ„μΉ˜ν•©λ‹ˆλ‹€. μ΄λŸ¬ν•œ 간접적인 μ ‘κ·Ό 방식은 ν”„λ‘ νŠΈμ—”λ“œ κ°œλ°œμžκ°€ 데이터 μŠ€ν† μ–΄μ—μ„œ μ‚¬μš©ν•  수 μžˆλŠ” 도ꡬλ₯Ό μ΅œλŒ€ν•œ ν™œμš©ν•˜λŠ” 것을 λ°©ν•΄ν•˜λŠ” κ²½μš°κ°€ λ§ŽμŠ΅λ‹ˆλ‹€. GraphQL은 이 문제λ₯Ό ν•΄κ²°ν•˜λŠ” 데 도움이 될 수 μžˆμ§€λ§Œ, λ§Žμ€ κ°œλ°œμžκ°€ 잘 μ΄ν•΄ν•˜μ§€ λͺ»ν•˜λŠ” λ³΄μ•ˆ κ΄€λ ¨ λ¬Έμ œκ°€ λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€.

반면, μ„œλ²„μ‚¬μ΄λ“œμ—μ„œ HTML을 생성할 λ•Œ, κ·Έ HTML을 μƒμ„±ν•˜λŠ” κ°œλ°œμžλŠ” 데이터 μŠ€ν† μ–΄μ— λŒ€ν•œ μ™„μ „ν•œ μ ‘κ·Ό κΆŒν•œμ„ 가지며, 예λ₯Ό λ“€μ–΄ SQL μŠ€ν† μ–΄μ—μ„œ 쑰인 및 집계 ν•¨μˆ˜μ™€ 같은 κΈ°λŠ₯을 ν™œμš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ΄λŠ” HTML을 μƒμ„±ν•˜λŠ” κ°œλ°œμžμ—κ²Œ 훨씬 더 λ§Žμ€ ν‘œν˜„λ ₯을 μ œκ³΅ν•©λ‹ˆλ‹€. ν•˜μ΄νΌλ―Έλ””μ–΄ APIλ₯Ό UI μš”κ΅¬ 사항에 맞게 ꡬ쑰화할 수 있기 λ•Œλ¬Έμ— 각 μ—”λ“œν¬μΈνŠΈλ₯Ό μ‘°μ •ν•˜μ—¬ 데이터 μŠ€ν† μ–΄ μš”μ²­μ„ κ°€λŠ₯ν•œ ν•œ 적게 ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

일반적인 κ·œμΉ™μœΌλ‘œλŠ” λͺ¨λ“  μš”μ²­μ΄ μ„Έ 번 μ΄ν•˜μ˜ 데이터 μŠ€ν† μ–΄ 접근을 λͺ©ν‘œλ‘œ ν•΄μ•Ό ν•œλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.

#팁 6: λͺ¨λ‹¬μ„ ν”Όν•˜λΌ

λͺ¨λ‹¬ 창은 μ˜€λŠ˜λ‚  λ§Žμ€ μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ 거의 ν‘œμ€€μ²˜λŸΌ 인기λ₯Ό 끌고 μžˆμŠ΅λ‹ˆλ‹€.

λΆˆν–‰νžˆλ„, λͺ¨λ‹¬ 창은 μ›Ήμ˜ λ§Žμ€ 인프라와 잘 μ–΄μšΈλ¦¬μ§€ μ•ŠμœΌλ©°, ν΄λΌμ΄μ–ΈνŠΈ μΈ‘ μƒνƒœλ₯Ό λ„μž…ν•˜μ—¬ ν•˜μ΄νΌλ―Έλ””μ–΄ 기반 μ ‘κ·Ό 방식과 κΉ¨λ—ν•˜κ²Œ ν†΅ν•©ν•˜κΈ° μ–΄λ €μšΈ 수 μžˆμŠ΅λ‹ˆλ‹€(λΆˆκ°€λŠ₯ν•˜μ§€λŠ” μ•Šμ§€λ§Œ).

λͺ¨λ‹¬ λŒ€μ‹  인라인 νŽΈμ§‘κ³Ό 같은 λŒ€μ•ˆμ„ κ³ λ €ν•΄λ³΄μ„Έμš”.

#팁 7: β€œμΆ©λΆ„νžˆ 쒋은” UXλ₯Ό 받아듀여라

HDA μ ‘κ·Ό 방식을 처음 μ ‘ν•˜λŠ” λ§Žμ€ SPA κ°œλ°œμžλ“€μ΄ ν˜„μž¬μ˜ SPA μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ •ν™•ν•˜κ²Œ ν•˜μ΄νΌλ―Έλ””μ–΄λ₯Ό μ‚¬μš©ν•˜μ—¬ κ΅¬ν˜„ν•˜λŠ” 것을 μƒμƒν•©λ‹ˆλ‹€. htmx 및 기타 ν•˜μ΄νΌλ―Έλ””μ–΄ 지ν–₯ λΌμ΄λΈŒλŸ¬λ¦¬λŠ” ν•˜μ΄νΌλ―Έλ””μ–΄ 기반 μ• ν”Œλ¦¬μΌ€μ΄μ…˜κ³Ό SPA κ°„μ˜ μƒν˜Έμž‘μš© 격차λ₯Ό μƒλ‹Ήνžˆ μ€„μ΄μ§€λ§Œ, κ·Έ κ²©μ°¨λŠ” μ—¬μ „νžˆ μ‘΄μž¬ν•©λ‹ˆλ‹€.

μ›Ήμ˜ REST-ful λ„€νŠΈμ›Œν¬ μ•„ν‚€ν…μ²˜μ™€ κ΄€λ ¨ν•˜μ—¬ Roy Fielding이 λ§ν–ˆλ“―μ΄,

κ·ΈλŸ¬λ‚˜ κ· μΌν•œ μΈν„°νŽ˜μ΄μŠ€λŠ” 정보λ₯Ό μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ ν•„μš”μ— 맞게 κ΅¬μ²΄ν™”λœ ν˜•νƒœκ°€ μ•„λ‹Œ ν‘œμ€€ν™”λœ ν˜•νƒœλ‘œ μ „μ†‘ν•˜κΈ° λ•Œλ¬Έμ— νš¨μœ¨μ„±μ΄ μ €ν•˜λœλ‹€.

νŠΉμ • UX에 λŒ€ν•΄ μ•½κ°„ 덜 효율적이고 덜 μƒν˜Έμž‘μš©μ μΈ μ†”λ£¨μ…˜μ„ λ°›μ•„λ“€μ΄λŠ” 것은 μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ ꡬ좕할 λ•Œ λ³΅μž‘μ„±μ„ 크게 쀄일 수 μžˆμŠ΅λ‹ˆλ‹€.

완벽이 μ„ μ˜ 적이 λ˜μ§€ μ•Šλ„λ‘ ν•˜μ„Έμš”.

#팁 8: ν•„μš”ν•  λ•Œ β€œμƒν˜Έμž‘μš© μ„¬β€œμ„ λ§Œλ“œμ„Έμš”

μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ°œλ°œν•˜λ‹€ 보면 ν•˜μ΄νΌλ―Έλ””μ–΄ μ ‘κ·Ό λ°©μ‹λ§ŒμœΌλ‘œλŠ” λΆ€μ‘±ν•œ 상황이 λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€.

κ·ΈλŸ¬ν•œ μƒν™©μ˜ 쒋은 예둜, ν•­λͺ©μ˜ λͺ©λ‘μ„ μž¬μ •λ ¬ν•˜λŠ” κΈ°λŠ₯을 λ“€ 수 μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό β€œμˆœμˆ˜β€ ν•˜μ΄νΌλ―Έλ””μ–΄ λ°©μ‹μœΌλ‘œ κ΅¬ν˜„ν•˜λ €λ©΄ μœ„μ•„λž˜ ν™”μ‚΄ν‘œλ₯Ό ν΄λ¦­ν•˜κ±°λ‚˜ ν•­λͺ© μ˜†μ— μˆœμ„œ 번호 λ“œλ‘­λ‹€μš΄μ„ λ°°μΉ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€. (λΆ€λ„λŸ½κ²Œλ„ 저도 이 두 가지λ₯Ό λ‹€ λ§Œλ“€μ–΄ λ³Έ 적이 μžˆμŠ΅λ‹ˆλ‹€!)

ν•˜μ§€λ§Œ μ΄λŸ¬ν•œ κ²½ν—˜μ€ μ‚¬λžŒλ“€μ΄ κΈ°λŒ€ν•˜λŠ” 것에 λΉ„ν•΄ 맀우 λΆˆνŽΈν•©λ‹ˆλ‹€. μ‚¬λžŒλ“€μ΄ κΈ°λŒ€ν•˜λŠ” 것은 λ“œλž˜κ·Έ μ•€ λ“œλ‘­μž…λ‹ˆλ‹€.

μ΄λŸ¬ν•œ 경우, β€œμƒν˜Έμž‘μš© 섬(Island of Interactivity)β€œμœΌλ‘œ ν”„λŸ°νŠΈμ—”λ“œ μ€‘μ‹¬μ˜ μ ‘κ·Ό 방식을 μ‚¬μš©ν•˜λŠ” 것은 μ „ν˜€ λ¬Έμ œλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

SortableJS μ˜ˆμ œμ„ κ³ λ €ν•΄λ³΄μ„Έμš”. μ—¬κΈ°μ—μ„œλŠ” λ“œλž˜κ·Έ μ•€ λ“œλ‘­μ„ ν—ˆμš©ν•˜λŠ” λ³΅μž‘ν•œ μƒν˜Έμž‘μš© μ˜μ—­μ΄ 있으며, μ΄λŠ” 이벀트λ₯Ό 톡해 htmx 및 더 넓은 ν•˜μ΄νΌλ―Έλ””μ–΄ 기반 μ• ν”Œλ¦¬μΌ€μ΄μ…˜κ³Ό ν†΅ν•©λ©λ‹ˆλ‹€.

이것은 HDA λ‚΄μ—μ„œ 더 ν’λΆ€ν•œ UXλ₯Ό μΊ‘μŠν™”ν•˜λŠ” ν›Œλ₯­ν•œ λ°©λ²•μž…λ‹ˆλ‹€.

#팁 9: μŠ€ν¬λ¦½νŒ…μ„ λ‘λ €μ›Œν•˜μ§€ λ§ˆμ„Έμš”!

μŠ€ν¬λ¦½νŒ…μ€ μ›Ή μ•„ν‚€ν…μ²˜μ˜ λͺ…μ‹œμ μΈ 일뢀이며, ν•˜μ΄νΌλ―Έλ””μ–΄ μ ‘κ·Ό 방식을 μ±„νƒν•œ κ°œλ°œμžλ“€μ€ 이λ₯Ό μ‚¬μš©ν•˜λŠ” 것을 λ‘λ €μ›Œν•΄μ„œλŠ” μ•ˆ λ©λ‹ˆλ‹€. λ¬Όλ‘  μŠ€ν¬λ¦½νŒ…μ—λ„ μ—¬λŸ¬ 가지 방식이 μžˆμŠ΅λ‹ˆλ‹€.

κ°€λŠ₯ν•œ ν•œ, ν•˜μ΄νΌλ―Έλ””μ–΄ μΉœν™”μ μΈ μŠ€ν¬λ¦½νŒ… 방식을 μ‚¬μš©ν•˜μ—¬ ν•˜μ΄νΌλ―Έλ””μ–΄ κ΅ν™˜μ„ μ„œλ²„μ™€ μ‹œμŠ€ν…œ μƒνƒœ 변경을 μœ„ν•œ μ£Όμš” 톡신 λ©”μ»€λ‹ˆμ¦˜μœΌλ‘œ μœ μ§€ν•΄μ•Ό ν•©λ‹ˆλ‹€.

alpine.js와 hyperscript와 같은 도ꡬλ₯Ό μ‚¬μš©ν•˜μ—¬ 인라인 μŠ€νƒ€μΌ μŠ€ν¬λ¦½νŒ…μ„ νƒμƒ‰ν•΄λ³΄λŠ” 것도 μ’‹μŠ΅λ‹ˆλ‹€. μ΄λŸ¬ν•œ μ ‘κ·Ό 방식은 μŠ€ν¬λ¦½νŒ…μ„ ν•˜μ΄νΌλ―Έλ””μ–΄(HTML) μžμ²΄μ— μ§‘μ€‘μ‹œν‚€λ©°, μž‘μ„±ν•  수 μžˆλŠ” μ½”λ“œμ˜ 양에 미학적인 μ œν•œμ„ λΆ€κ³Όν•©λ‹ˆλ‹€.

#팁 10: μ‹€μš©μ μ΄ λ˜μ„Έμš”

λ§ˆμ§€λ§‰μœΌλ‘œ, ν•˜μ΄νΌλ―Έλ””μ–΄ μ‚¬μš©μ— λŒ€ν•΄ ꡐ쑰적이지 μ•Šλ„λ‘ ν•˜μ„Έμš”. κ²°κ΅­, ν•˜μ΄νΌλ―Έλ””μ–΄λŠ” κ³ μœ ν•œ 강점과 약점을 가진 또 λ‹€λ₯Έ 기술일 λΏμž…λ‹ˆλ‹€. νŠΉμ • μ•±μ˜ μΌλΆ€λ‚˜ 전체 앱이 ν•˜μ΄νΌλ―Έλ””μ–΄κ°€ μ œκ³΅ν•  수 μžˆλŠ” 것보닀 더 μƒν˜Έμž‘μš©μ μΈ κΈ°λŠ₯을 μš”κ΅¬ν•œλ‹€λ©΄, 그에 μ ν•©ν•œ κΈ°μˆ μ„ μ„ νƒν•˜μ„Έμš”.

단, ν•˜μ΄νΌλ―Έλ””μ–΄κ°€ ν•  수 μžˆλŠ” 것을 잘 μ΄ν•΄ν•˜κ³  μžˆμ–΄μ•Ό, informed developerλ‘œμ„œ κ·Έ 결정을 내릴 수 μžˆμŠ΅λ‹ˆλ‹€.

#κ²°λ‘ 

이 νŒλ“€μ΄ ν•˜μ΄νΌλ―Έλ””μ–΄μ™€ μ„œλ²„μ‚¬μ΄λ“œ λ Œλ”λ§μ„ 보닀 효과적이고 μ›ν™œν•˜κ²Œ λ„κ΅¬λ‘œ ν™œμš©ν•˜λŠ” 데 도움이 되기λ₯Ό λ°”λžλ‹ˆλ‹€. ν•˜μ΄νΌλ―Έλ””μ–΄λŠ” μ™„λ²½ν•œ ν΄λΌμ΄μ–ΈνŠΈ-μ„œλ²„ μ•„ν‚€ν…μ²˜λŠ” μ•„λ‹ˆλ©°, λͺ…ν™•ν•œ νŠΈλ ˆμ΄λ“œμ˜€ν”„κ°€ μ‘΄μž¬ν•˜μ§€λ§Œ, λ§Žμ€ μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜(μ˜€λŠ˜λ‚  λŒ€λΆ€λΆ„μ˜ μ›Ή κ°œλ°œμžλ“€μ΄ μ˜ˆμƒν•˜λŠ” 것보닀 훨씬 더 λ§Žμ€ 경우)에 맀우 효과적일 수 있으며, κ·Έ 경우 훨씬 κ°„λ‹¨ν•œ 전체 개발 κ²½ν—˜μ„ μ œκ³΅ν•©λ‹ˆλ‹€.

</>