Svelte ๋?
- ์ปดํ์ผ๋ฌ ๊ธฐ๋ฐ ํ๋ ์์ํฌ
- ๋ฆฌ์กํธ๋ ๋ทฐ๋ ๋ธ๋ผ์ฐ์ ์์ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ๋์ํ๋ ๋ฐํ์ ํ๋ ์์ํฌ๋ก ์ค์ ์คํ ์์ ์์ Virtual DOM์ ์์ฑํจ
- ๊ทธ์ ๋ฐํด Svelte๋ ์ฝ๋๋ฅผ ์์ฑํ ๋ ์ปดํ์ผ๋ฌ๊ฐ ๋ฏธ๋ฆฌ ์ต์ ํ๋ ๋ฐ๋๋ผ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ก ๋ณํํจ
- ๊ฒฐ๊ณผ์ ์ผ๋ก Svelte๋ ๋ ๋๋ง ์๋๊ฐ ๋น ๋ฆ
๊ตฌ์กฐ์ ๋ฌธ๋ฒ
<script>
let count = 0;
function increment() {
count += 1;
}
</script>
<style>
button {
font-size: 18px;
}
</style>
<h1>Count: {count}</h1>
<button on:click={increment}>+</button>
- <script> ์์ญ : ์ปดํฌ๋ํธ ๋ก์ง
- <style> ์์ญ : ์ปดํฌ๋ํธ ์ ์ฉ CSS (์๋์ผ๋ก ๋ฒ์ ํ์ ๋จ, scoped ์ฒ๋ฆฌ)
- ๋งํฌ์ ์์ญ : ์ค์ DOM ๊ตฌ์กฐ (HTML + Svelte ๋ฌธ๋ฒ)
๋ฐ์ํ(Reactivity) ๋ฌธ๋ฒ
- Svelte์ ๊ฐ์ฅ ํฐ ์ฅ์ ์ ๊ฐ๋จํ '๋ฐ์ํ' ๋ฌธ๋ฒ
// ๊ธฐ๋ณธ ๋ฐ์์ฑ
let count = 0;
function increment() {
count += 1; // count ๊ฐ์ด ๋ฐ๋๋ฉด UI ์๋ ๊ฐฑ์
}
- setState() ๊ฐ์ ๋ณ๋ ํจ์๊ฐ ํ์์์, ๋ณ์๋ฅผ ์ฌํ ๋นํ๋ฉด ์๋์ผ๋ก UI๊ฐ ์ ๋ฐ์ดํธ ๋จ
// ๋ฐ์ํ ์ ์ธ๋ฌธ ($:)
let a = 1;
let b = 2;
$: sum = a + b; // a๋ b๊ฐ ๋ฐ๋๋ฉด sum๋ ์๋ ์
๋ฐ์ดํธ
๋ฐ์ดํฐ ์ ๋ฌ (Props)
- ์ปดํฌ๋ํธ ๊ฐ ๋ฐ์ดํฐ ์ ๋ฌ๋ ๊ฐ๋จํจ
- ๋ถ๋ชจ -> ์์
<!-- Parent.svelte -->
<Child name="ํ๊ธธ๋" />
<!-- Child.svelte -->
<script>
export let name;
</script>
<p>์๋
ํ์ธ์, {name}๋!</p>
์ํ๊ด๋ฆฌ
- ํ๋ก์ ํธ ๊ท๋ชจ๊ฐ ์ปค์ง ๊ฒฝ์ฐ Svelte store๋ฅผ ์ฌ์ฉ
// store.js
import { writable } from 'svelte/store';
export const count = writable(0);
<!-- App.svelte -->
<script>
import { count } from './store.js';
</script>
<h1>{$count}</h1>
<button on:click={() => $count += 1}>+</button>
--> $count ๋ฌธ๋ฒ์ผ๋ก store์ ๊ฐ์ ์๋์ผ๋ก ๊ตฌ๋ /๊ฐฑ์
Svelte์ ์ฅ์
- Virtual DOM ์์ด์ ๋น ๋ฅธ ๋๋๋ง์ด ๊ฐ๋ฅํจ
- ์ฝ๋๋์ด ์ ๊ณ ๊ฐ๊ฒฐํจ
- CSS๊ฐ ์๋์ผ๋ก ์ปดํฌ๋ํธ ๋ฒ์์ ํ์ ๋จ
- ๋น๋ ํ ์คํํ์ผ์ด ๊ฐ๋ฒผ์
Svelte์ ๋จ์
- ์ํ๊ณ๊ฐ ๋ฆฌ์กํธ๋ ๋ทฐ์ ๋นํด์ ์์์ ๊ธฐ์ ์ง์ ๋๊ตฌ๊ฐ ์๋์ ์ผ๋ก ์ ์
(์ค๋ฒจํธ๊ฐ ๊ฐ๋ณ๊ณ ๋๋๋ง์ด ๋นจ๋ผ์ ์ข๊ธดํ๋ฐ ๊ฐ์ธ์ ์ธ ์๊ฒฌ์ผ๋ก๋ ๊ตณ์ด ๋ฆฌ์กํธ๋ ๋ทฐ ๋๊ณ ์ธ ํ์๋ ์๋ ๊ฒ ๊ฐ๋ค.)
- ์ผ๋ถ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํธํ์ฑ ๋ถ์กฑ
'ETC.' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [SAP] SAP์ ๋ํด์ ์์๋ณด์ (2) | 2025.10.21 |
|---|---|
| [Jenkins] ํ์ดํ๋ผ์ธ(Pipeline) ๋ฌธ๋ฒ (0) | 2025.10.12 |
| [Server] Redis ์๋ฒ๋? (0) | 2025.03.29 |
| [Big Query] Google Cloud ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค Big Query (2) | 2025.03.09 |
| [Snowflake] ๋ฐ์ดํฐ์จ์ดํ์ฐ์ค Snowflake์ ๊ฐ๋ (1) | 2025.02.27 |