๐Ÿ Programming/Svelte

[Svelte] Svelte๋ž€?

Dhey 2022. 3. 17. 17:10
๋ฐ˜์‘ํ˜•

 

2021๋…„ Stack Overflow ๊ฐœ๋ฐœ์ž ์„ค๋ฌธ์กฐ์‚ฌ ๊ฒฐ๊ณผ์—์„œ 1์œ„๋ฅผ ์ฐจ์ง€ํ•œ, ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๊ฐ€์žฅ ์‚ฌ๋ž‘๋ฐ›๋Š” ์›น ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ๋ฝ‘ํžŒ Svelte(์Šค๋ฒจํŠธ)์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž.

 

์ด ๊ธ€์—์„œ๋Š” Svelte๊ฐ€ ๋ฌด์—‡์ธ์ง€, ๊ทธ๋ฆฌ๊ณ  ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€, React์™€๋Š” ๋ฌด์—‡์ด ๋‹ค๋ฅด๊ณ  ์–ด๋–ป๊ฒŒ React๋ณด๋‹ค ๋น ๋ฅธ์ง€์— ๋Œ€ํ•ด ํฌ์ŠคํŒ…ํ•ด๋ณด๋ ค ํ•œ๋‹ค.

 


 

Svelte ๋ž€?

๋น ๋ฅธ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•œ ๋„๊ตฌ
· ์˜คํ”ˆ ์†Œ์Šค ํ”„๋ก ํŠธ์—”๋“œ ์›น ํ”„๋ ˆ์ž„์›Œํฌ

 

 

Svelte(์Šค๋ฒจํŠธ)๋Š” 2016๋…„ ์ถœ์‹œ๋œ ์˜คํ”ˆ ์†Œ์Šค ํ”„๋ก ํŠธ์—”๋“œ ์›น ํ”„๋ ˆ์ž„์›Œํฌ๋กœ, ๋น ๋ฅธ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•œ ํˆด์ด๋‹ค. Interactiveํ•œ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌ์ถ•ํ•œ๋‹ค๋Š”๋ฐ ์žˆ์–ด React๋‚˜ Vue์™€ ๊ฐ™์€ JavaScript ํ”„๋ ˆ์ž„์›Œํฌ, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ์œ ์‚ฌํ•˜๋‹ค. 

 

 

Svelte ์ปดํฌ๋„ŒํŠธ๋Š” 3๊ฐ€์ง€ ์š”์†Œ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.

1. Script Tag

  : <script>๋ธ”๋ก์—๋Š” ๊ตฌ์„ฑ ์š”์†Œ ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ ์‹คํ–‰๋˜๋Š” JavaScript๊ฐ€ ํฌํ•จ๋œ๋‹ค.

2. Style Tag (์ปดํฌ๋„ŒํŠธ์˜ ์Šคํƒ€์ผ)

  : ์ปดํฌ๋„ŒํŠธ์˜ ์Šคํƒ€์ผ์„ ๋‚˜ํƒ€๋‚ด๋ฉฐ CSS ๋‚ด๋ถ€์˜ <style>๋ธ”๋ก์€ ํ•ด๋‹น ๊ตฌ์„ฑ ์š”์†Œ๋กœ ๋ฒ”์œ„๊ฐ€ ์ง€์ •๋œ๋‹ค.

3. <div>์œ„์น˜์—๋Š” ์›ํ•˜๋Š” HTML ์š”์†Œ๋“ค์„ ๋ฌด์—‡์ด๋“  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

 

# Svelte์™€ React, Vue์˜ ์ฐจ์ด

 Svelte๋Š” ์‹ค์ œ DOM์„ ์‚ฌ์šฉํ•˜๋ฉฐ, ์ปดํŒŒ์ผ๋Ÿฌ์ด๋‹ค.

 

React(๋ฆฌ์•กํŠธ), Vue(๋ทฐ)์™€๋Š” ๋‹ค๋ฅด๊ฒŒ Svelte๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์•„๋‹ˆ๋ผ ์ปดํŒŒ์ผ๋Ÿฌ์— ๊ฐ€๊น๋‹ค.

Svlete๋Š” ์ž์‹ ์„ 'ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์—†๋Š” ํ”„๋ ˆ์ž„์›Œํฌ' ๋ผ๊ณ  ์†Œ๊ฐœํ•œ๋‹ค. ์ด๋Š” ๊ฐ€์ƒ DOM์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉฐ, ๋Ÿฐํƒ€์ž„์— Load ํ•  ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์—†์Œ์„ ์˜๋ฏธํ•œ๋‹ค. 

 

React๋Š” ๊ฐ€์ƒ DOM์„ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€ํ‘œ์ ์ธ ์›น ํ”„๋ ˆ์ž„์›Œํฌ์ด๋‹ค. ๊ฐ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๋งŒ๋“ค๋ฉด ๊ฐ€์ƒ DOM ๊ฐ์ฒด๊ฐ€ ๋งŒ๋“ค์–ด์ง€๊ณ , ์‹ค์ œ DOM๊ณผ ๊ฐ€์ƒ DOM์„ ๋น„๊ตํ•˜์—ฌ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์‹ค์ œ DOM์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•œ๋‹ค.

๋ฐ˜๋ฉด, Svelte๋Š” ์ด ๊ณผ์ •์„ ์ƒ๋žตํ•˜๊ณ  ๋ฐ”๋กœ ์‹ค์ œ DOM์„ ๋ฐ˜์˜ํ•œ๋‹ค. Svelte๋Š” ์•ฑ์„ ์‹คํ–‰ ์‹œ์ (Run time)์—์„œ ํ•ด์„ํ•˜์ง€ ์•Š๊ณ  ๋นŒ๋“œ ์‹œ์ (Build time)์—์„œ Vanilla JavaScript ๋ฒˆ๋“ค๋กœ ์ปดํŒŒ์ผํ•œ๋‹ค.

 

 

์˜ˆ๋ฅผ ๋“ค์–ด, React๋กœ ์›น์„œ๋น„์Šค๋ฅผ ๋นŒ๋“œํ•˜๋ฉด, ์ œ์ž‘ํ•˜๊ณ  ๋ฐฐํฌ๋ฅผ ํ•˜๊ฒŒ ๋  ์‹œ ์œ ์ €๊ฐ€ ์›น์‚ฌ์ดํŠธ์— ๋“ค์–ด์˜ฌ ๋•Œ 2๊ฐ€์ง€ ์ข…๋ฅ˜์˜ ์ฝ”๋“œ, 1)์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์„ฑํ•˜๋Š” ์ฝ”๋“œ ์™€ 2)React ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ฐฐํฌํ•ด์•ผ ํ•œ๋‹ค.

 

๊ทธ๋Ÿฌ๋‚˜ Svelte๋Š” ์ปดํŒŒ์ผ๋Ÿฌ์ด๊ธฐ ๋•Œ๋ฌธ์— ์•Œ์•„์„œ ์ฝ”๋“œ๋ฅผ ๋ถ„์„ํ•˜๊ณ , ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋ฐ”๋กœ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” JS ์ฝ”๋“œ๋กœ ์ž๋™ ์ปดํŒŒ์ผ ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์œ ์ €๊ฐ€ ์›น์‚ฌ์ดํŠธ์— ๋“ค์–ด์˜ฌ ๋•Œ Svelte ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ œ์™ธํ•œ, ์ƒ์„ฑ๋œ ๋‹จ ํ•˜๋‚˜์˜ JavaScript ํŒŒ์ผ๋งŒ ๋ฐฐํฌํ•˜๋ฉด ๋œ๋‹ค.

 

์ด๋กœ์ธํ•ด ์•ฑ ์‚ฌ์ด์ฆˆ๋Š” React์™€ Vue์— ๋น„ํ•ด ๋งค์šฐ ์ž‘๋‹ค.

 

-

 

๋˜ํ•œ React, Vue ๋ณด๋‹ค ํ›จ์”ฌ ๋น ๋ฅด๋‹ค. 

์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋”์šฑ ์ตœ์ ํ™”๋œ JS ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค์–ด์„œ ๋”์šฑ ๋น ๋ฅธ ์†๋„๋กœ UI๋ฅผ ์ƒˆ๋กœ๊ณ ์นจ ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— Virtural DOM์ด ํ•„์š”์—†์–ด VanillaJS์™€ ๊ฐ™์€ ์Šคํ”ผ๋“œ๋ฅผ ๋ณด์—ฌ์ค€๋‹ค.

 

 

# ์™œ ์‚ฌ๋žŒ๋“ค์ด Svelte๋ฅผ ์ข‹์•„ํ• ๊นŒ?

  - ๊ฐœ๋ฐœ ๊ฒฝํ—˜(๊ฐ€์žฅ ํฐ ์ด์œ ) → Svelte๋Š” React๋‚˜ Vue ๊ฒฝํ—˜์ด ์žˆ๋‹ค๋ฉด, ๋ฐฐ์šฐ๊ธฐ ์‰ฝ๊ณ  ์ง๊ด€์ ์ด๋‹ค.

  - ์œ ์ €์—๊ฒŒ์„œ ์ž…๋ ฅ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๋Š” ์ž‘์—…๋“ค์ด React์ฒ˜๋Ÿผ ์˜ค๋ž˜ ๊ฑธ๋ฆฌ์ง€ ์•Š๊ณ  ๊ธˆ๋ฐฉ ํ•  ์ˆ˜ ์žˆ๋‹ค.

  - ์ฝ”๋“œ๊ฐ€ ์ง๊ด€์ ์ด๊ณ , ์ฒ˜์Œ๋ณด๋Š” ์‚ฌ๋žŒ๋„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์„ ์ •๋„๋กœ ์ฝ๊ธฐ ํŽธํ•˜๋‹ค.

 

 

 

 

 

 

 

[์ฐธ๊ณ ] https://youtu.be/Y7PHBSqDfvE

๋ฐ˜์‘ํ˜•