ν΄λΉ κ²μκΈμ
(1) SvelteKit κ°μ
(2) SvelteKit μ€μΉ λ°©λ²
μ λν λ΄μ©μ λ΄κ³ μμ΅λλ€.
μ΄μ κ²μκΈ - μ νν Svelte μμ? μ λ 곡λΆν΄λ³ΌκΉμ? #1
μ νν Svelte μμ? μ λ 곡λΆν΄λ³ΌκΉμ? #1
ν΄λΉ κ²μκΈμ (1) Svelte λ₯Ό μ νν κ³κΈ° (2) Svelte λ₯Ό 곡λΆνκΈ° μ ν©ν λμ μ λν λ΄μ©μ λ΄κ³ μμ΅λλ€. κ΄λ ¨ κ²μκΈ - Frontend κ°λ°μκ° μλλ° κ΅³μ΄ Web/App μ 곡λΆν΄μΌ ν κΉμ? [fe-cm : ep.1] Frontend
gngb-tech.tistory.com
ch1 - SvelteKit 릴리μ¦
SvelteKit μ΄ λ¬΄μμΈκ°μ?
SvelteKit v1.0
SvelteKit μ Svelte μ Meta-framework λ‘μ μ΅κ·Ό (2022.12.15) v1.0 μ΄ μ μ μΆμλμμ΅λλ€. React.js μ μ΅μνμ λΆλ€μ Next.js, Vue.js μ μ΅μνμ λΆλ€μ Nuxt.js μ κ°μ λ°°κ²½κ³Ό λͺ©μ μ μν΄ κ°λ°λ Meta-framework λΌκ³ μ΄ν΄ν΄ μ£Όμλ©΄ λ κ² κ°μ΅λλ€. Frontend κ°λ°μ μ²μ μ νμλ λΆλ€μ μ΄μ κ°μ Meta-framework κ° μ΅μνμμ§ μκ² μ§λ§, Svelte λ₯Ό νμ©ν κ°λ° κ²½νμ κ°μ ν΄μ€ μ μλ Framework κ° Beta λ²μ Ό μ΄ν μ μ λ²μ ΌμΌλ‘ μΆμλμλ€κ³ μ΄ν΄ν΄ μ£Όμλ©΄ λ κ² κ°μ΅λλ€. μ΄μ κ²μκΈμμλ μΈκΈνμλ―μ΄, λ€μν μ νμ§ μ€ Web κ°λ°μ Svelte λ‘ μμνκ² λ μ£Όμ κ³κΈ°λ‘ SvelteKit μ μ μΆμκ° μμλ λ§νΌ Svelte μ κ΄μ¬μ΄ μμλ μ¬λλ€μκ²λ μ΄λ² μ μ λ²μ Ό μΆμκ° κ΅μ₯ν μ€λ λ μΌμ΄μμ΅λλ€. μ μ λ²μ Ό μ΄μ μ SvelteKit μ (λ€λ₯Έ Beta λ²μ Ό Framework λ μ μ¬νκ² μ§λ§) μ¦μ λ³κ²½μ΄ μκ³ λμκΈ° λλ¬Έμ νμ΅ λμμΌλ‘μ μμ μ μ΄μ§ λͺ»νκ³ , νλ‘μ νΈμ μ μ λμ νκΈ°μλ μνν νλ¨μΌλ‘ κ°μ£Όλμμ΅λλ€.
SvelteKit μ 곡μ ννμ΄μ§μ μ κ·Όνλ©΄ μλμ κ°μ μΈκ°μ ν€μλκ° λ°©λ¬Έμμκ² κ°μ₯ λ¨Όμ λ ΈμΆλ©λλ€. Frontend κ°λ° μ΄μ¬μμ μ μ₯μμλ 'Fun' μ΄λΌλ ν€μλκ° μ λ λμ λκ³ ν₯λ―Έλ‘κ² λκ»΄μ§λλ€. λ€μν κ°λ° μΈμ΄ νΉμ Framework μ 곡μ ννμ΄μ§λ₯Ό λ°©λ¬Έν΄λ³Έ κΈ°μ΅ μμ, Fun μ΄λΌλ ν€μλλ₯Ό μ΄λ κ²κΉμ§ μλμ€λ½κ² μ΅μλ¨μ λ ΈμΆμν€λ ννμ΄μ§λ λ³Έ κΈ°μ΅μ΄ μκΈ° λλ¬Έμ λλ€. (μ€μ λ‘ μ΄νμ SvelteKit μ ν΅ν΄ κ°λ¨ν Demo Web λ₯Ό ꡬνν΄λ³Έ κ²°κ³Ό, μ¬λ―ΈμκΈ΄ νμ΅λλ€.)
SvelteKit νΉμ§
SvelteKit μ νΉμ§ (μ₯μ ) μ 곡μ ννμ΄μ§μ κ°μ₯ μμΈν κΈ°μ¬λμ΄ μμ΅λλ€. Frontend κ°λ° μ λ¬Έμλ‘μ κΉμ μμ€μΌλ‘ μ΄ν΄ν μ μλ λΆλΆμ μ νμ μ΄μμ§λ§, μ¬λ¬ λΈλ‘κ·Έ λ° μκ° μμμ ν΅ν΄ νμ ν μ£Όμ νΉμ§μ μλμ κ°μ΅λλ€.
- SSR (Server-side Rendering) μ μμ½μ΄λ₯Ό νμ©νμ¬ κ΅¬νν μ μλ€.
- Backend κΈ°λ₯ (REST API) μ ꡬνν μ μλ€.
- νμ΄μ§ λΌμ°ν μ ν΄λλͺ κΈ°λ°μΌλ‘ νΈλ¦¬νκ² κ΅¬νν μ μλ€. (λμ λΌμ°ν λ κ°λ₯νλ€.)
- HTML λ μ΄μμμ μμ½νμΌμ ν΅νμ¬ κ΅¬νν μ μλ€.
- Netlify λ₯Ό ν΅ν΄ κ°λ°ν Web μ μ½κ² λ°°ν¬ν μ μλ€.
μμ μ¬νλ€μ SvelteKit μ νμ©ν Web κ°λ° κ³Όμ μμ ꡬ체μ μΌλ‘ λ€λ£¨λλ‘ νκ² μ΅λλ€. (SSR κ³Ό κ°μ΄ Frontend κ³΅ν΅ κ°λ μ ν΄λΉνλ μ¬νμ μΆν, Frontend - Common λΆλ₯μ κ²μκΈμ μ λ‘λν μμ μ λλ€.) κ°μΈμ μΌλ‘λ νΈλ¦¬ν νμ΄μ§ λΌμ°ν λ°©μ λ° (Full-stack Web κ°λ°μ μν) μ체 REST API ꡬν λΆλΆμ΄ κ°μ₯ λ§€λ ₯μ μΌλ‘ λ€κ°μμ΅λλ€.
ch2 - SvelteKit μ€μΉ λ°©λ²
SvelteKit μ μ΄λ»κ² μ€μΉνλ©΄ λλμ?
μ€λΉμ¬ν
Node.js κ° μ€μΉλ μν©μ΄ μ μ λ©λλ€. Node.js λ 곡μ ννμ΄μ§λ₯Ό ν΅ν΄ λ€μ΄λ‘λ (Node.js λ€μ΄λ‘λ λ§ν¬) ν μ μμ΅λλ€. Node.js κ° μ μμ μΌλ‘ λ€μ΄λ‘λ λμλ€λ©΄, ν°λ―Έλμ μλ λκ°μ λͺ λ Ήμ΄λ₯Ό μ λ ₯νμ λ νΉμ κ²°κ³Όκ°μ΄ λ°νλ©λλ€.
node -v
npm -v
λν, Web κ°λ° ν¨μ¨μ± ν₯μμ μν΄ μ μ ν IDE κ° νμνλ°, SvelteKit μμ 곡μμ μΌλ‘ μΆμ²νλ VScode λ₯Ό μ¬μ©νκ² μ΅λλ€. (μλλ μ¬μ©νκ³ μκΈ΄ νμ΅λλ€.) VScode λ Frontend λΆμΌμ νμ λ κ²μ΄ μλλΌ, Backend λ° ML/DL λΆμΌ λ± μ λΆμΌμ κ±Έμ³ κ°μ₯ λ§μ΄ νμ©λλ IDE μ λλ€. νΉν, μ΅κ·Όμλ IT μ κ³μ μ§μ₯μμλ νΉλ³ν μ¬μ κ° μλ€λ©΄ (Github μ κ°μ΄) VScode λ₯Ό νμ€ Tool λ‘ νμ©νλ λ―ν λλμ λ°μ μ μμ μ λμ μμμ 보μ΄κ³ μμ΅λλ€. λ°λΌμ, VScode λ₯Ό μ¬μ©ν΄λ³΄μ κ²½νμ΄ μλ€λ©΄ μ΄λ² κΈ°νμ λ€μ΄λ‘λ λ°μμ (VScode λ€μ΄λ‘λ λ§ν¬) μ¬μ©ν΄λ³΄μ€ κ²μ κΆμ₯ν΄λ립λλ€.
μ€μΉ λ° μ€ν
ν°λ―Έλμμ μλμ λͺ λ Ήμ΄λ₯Ό μ λ ₯νλ©΄ SvelteKit μ λ€μ΄λ‘λ λ°μ μ μμ΅λλ€. (κΈ°λ³Έμ μΈ μ€μΉκ³Όμ μ 곡μ λ¬Έμμ κ°μ΄λλΌμΈκ³Ό λμΌν©λλ€.)
npm create svelte@latest gngb-app
cd gngb-app
npm install
npm run dev
첫 λͺ λ Ήμ΄μ λν μ€ν κ³Όμ μμ λ€μν μ΅μ μ μ νν΄μΌ νλλ°, ν΄λΉ κ²μκΈμμλ μλμ μ΄λ―Έμ§μ κ°μ΄ μ€μ νμμ΅λλ€. λΆκ°μ μΈ ν νλ¦Ώ νμΌμ΄ 첨λΆλμ§ μλ Skeleton project λ₯Ό μ ννκ³ , TypeScript λ JavaScript κ° μ΅μν΄μ§ μ΄ν 곡λΆν κ³νμ΄λ―λ‘ μ ννμ§ μμμ΅λλ€.
λ§μ§λ§ λͺ λ Ήμ΄λ₯Ό μ€ννλ©΄ ν°λ―Έλμμ http://localhost:5173/ μ μ κ·ΌνλΌλ μ€λͺ μ νμΈν μ μμΌλ©°, ν΄λΉ μ£Όμλ‘ μ μνλ©΄ μ’μΈ‘ νλ¨μ μ΄λ―Έμ§μ κ°μ΄ λ‘컬 νκ²½μμ Web μ΄ μ λμνκ³ μλ κ²μ νμΈν μ μμ΅λλ€. ν΄λΉ Web μ μ°μΈ‘ νλ¨μ μ΄λ―Έμ§μ μ‘΄μ¬νλ src/routes/+page.svelte νμΌμ μ½λμ κΈ°λ°ν©λλ€.
src/routes/+page.svelte νμΌμ μ½λλ₯Ό μλμ κ°μ΄ μμ ν΄λ³΄κ² μ΅λλ€.
<h1>Welcome to GNGB</h1>
<p>
μ΄μ¬ν 곡λΆν΄λ΄
μλ€!
</p>
μ΄κ³Ό κ°μ΄ src/routes ν΄λ λ΄, +page.svelte νμΌμ μ½λλ₯Ό μμ νκ³ μ μ₯νλ©΄ μ¦κ° λ‘컬 νκ²½μ Web μ λ°μλλ ꡬ쑰μ λλ€. λ€λ₯Έ JavaScript κΈ°λ°μ Web Framework (React.js, Vue.js) μ λ€λ₯΄κ², κΈ°λ³Έμ μΈ HTML λ¬Έλ²λ§μΌλ‘ λμνλ κ²μ΄ ν₯λ―Έλ‘μ΅λλ€. 'Write Less Code' λΌλ Svelte μ μ£Όμ μ² νμ μ§§μ μκ°μ κ°λ ¬νκ² λλ μ μμμ΅λλ€.
// React μ Hellworld μμ
import React from 'react';
function App() {
return (
<div>
Hello World
</div>
);
}
// Svelte μ Hellworld μμ
<div>Hello World</div>
λΉμ 곡μκ° Svelte λ₯Ό 곡λΆνλ κ³Όμ μμ κ²ͺκ² λ μ΄λ €μκ³Ό μνμ°©μ€λ₯Ό λ¨Όμ κ²½ννκ³ , μ΄μ΄μ§ κ²μκΈμμ μ΅λν μ½κ² 곡μ ν΄λλ¦¬κ³ μ ν©λλ€. μλͺ»λ λ΄μ©μ λν μ§μ μ¬νμ΄λ λ¬Έμμ¬νμ μΈμ λ μ§ νΈνκ² λκΈλ‘ λ¨κ²¨μ£ΌμκΈΈ λ°λΌκ² μ΅λλ€.
