๋ ์ค๋ฅด๋ FE ๋์ธ ์ค๋ฒจํธ(Svelte)
์ค๊ธ ๊ฐ๋ฐ์์๊ฒ ํ์ํ ํต์ฌ์ ๋น ๋ฅด๊ฒ!
Svelte๋ก ๊ตฌ์ถํ๋ ํ์ ์์
Svelte ๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ์ ์ตํ๋ค๋ฉด ๋ค์์ ๋น์ฐํ ์ค์ ํ๋ก์ ํธ์
๋๋ค. Svelte REST-API ํ๋ก์ ํธ ๊ฐ์๋ฅผ ํตํด ์ค์ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ ๊ธฐ์ด ๊ฒฝํ์ ์์๋ณด์ธ์!
์ด ๊ฐ์๋ Svelte๋ฅผ ์ด์ฉํด CRUD: ์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ์ฐ๊ณ (Create), ์ฝ๊ณ (Read), ์์ ํ๊ณ (Update), ์ญ์ (Delete)ํ๋ ๋ฐฉ๋ฒ์ ์์๊ฐ๊ฒ ๋ฉ๋๋ค. ์ฌ๊ธฐ์ JWT ํ ํฐ์ ์ด์ฉํ ์ธ์ฆ๋ฐฉ๋ฒ๊ณผ ๋ฌดํ ์คํฌ๋กค์ ์ด์ฉํ ํ์ด์ง๋ค์ด์
๋ฑ ํ๋ฐํธ์๋๋ก ํ๋ก์ ํธ๋ฅผ ์งํํ๋ ๋ฐ ํ์๋ก ์์์ผ ํ๋ ์์๋ค์ ํ์ตํ ์ ์์ต๋๋ค.
๊ฒ์๊ธ ์์ฑ ํ์ด์ง
์ฝ๋ฉํธ ํ์ด์ง
๋ก๊ทธ์ธ ํ์ด์ง
์ด๋ฐ ๊ฒ๋ค์ ๋ฐฐ์์ โ๏ธ
์ค๋ฒจํธ ๋์ ์ ์ ์ง๊ฐ!
์ด ๊ฐ์๋ โ์ค๋ฒจํธ๋ก ์์ํ๋ ์น ํ๋ฐํธ์๋โ ๋์์ ๋ง์ง๋ง ์ฑํฐ๋ฅผ ์์์ผ๋ก ๋ง๋ ๊ฐ์์
๋๋ค.
(์ ์ ์ง์: HTML/CSS ๋ฐ JavaScript ๊ธฐ์ด, Svelte ๊ธฐ์ด)
ํ๋ฐํธ์๋ ๊ฐ๋ฐ์ ํ๋ฉด์ ๊ฐ์ฅ ๋ง์ด ํ๋ ์ผ์ ์๋ง๋ REST API์ ํต์ ํ๋ ์ด๋ค ์๋น์ค๋ฅผ ๋ง๋๋ ์์
์ผ ๊ฒ์
๋๋ค. ์๋ฒ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ๊ณ , ์์ฒญ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ํ๋ฉด์ ๋ณด์ฌ์ฃผ๊ณ , ๋ฐ์ดํฐ์ ์ถ๊ฐ, ์์ , ์ญ์ (CRUD) ๋ฑ์ ์์ฒญํ๋ ๊ณผ์ ์ ํ๋ฐํธ์๋ ๊ฐ๋ฐ์ ํ๋ ๋๊ตฌ๋ผ๋ ๊ผญ ์์์ผ ํ๋ ์์์
๋๋ค.
์ด ๊ฐ์์์๋ ํ๋ฐํธ์๋ ๊ด์ ์์ ์ด๋ฐ REST API ํ์ ์ฌ์ฉ๋ฒ์ ๋ํ ๋ด์ฉ์ ๋ค๋ฃน๋๋ค.
- โ
Svelte ์ค๊ธ ์ฌ์ฉ๋ฒ
- โ
Rest API๋ฅผ ์ด์ฉํ ํต์
- โ
Axios๋ฅผ ์ด์ฉํ ํจ์จ์ ์ธ ์๋ฒ ํต์
- โ
๋ฌดํ ์คํฌ๋กค(Infinite Scroll)์ ์ด์ฉํ ํ์ด์ง๋ค์ด์
๊ตฌํ
- โ
JWT ํ ํฐ์ ์ด์ฉํ ์ธ์ฆ
- โ
ํผ ๊ฒ์ฆ, Router ์ฌ์ฉ๋ฒ
REST API ๋ฐ์ดํฐ ํต์ , ๊ฐ์ข
ํด๊ฒฐ๋ฐฉ๋ฒ...
์ค๊ธ FE ๊ฐ๋ฐ์๋ผ๋ฉด ๊ผญ ์์์ผ ํ ๋ด์ฉ!
REST API ํ์ ์ฌ์ฉ๋ฒ ์ธ์๋, Svelte์ Store๋ฅผ ํ์ฉํด ๋ชฉ๋ก์ ๋ณํ๊ฐ ์์ ๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๋ค์ ๋ถ๋ฌ์ค๋ ๊ฒ์ด ์๋ ๋ถ๋ถ ์์ ์ ํตํ ํต์ ํจ์จ์ ๋์ด๋ ๋ฐฉ๋ฒ ๋ฑ์ ๋ํ ๊ณ ๋ฏผ๋ถํฐ, ํ์ฌ ๋๋ฆฌ ์ฐ์ด๋ ๋ฌดํ์คํฌ๋กค ๋ฐฉ์์ UI๋ฅผ ๊ตฌํํ ๋ ๋ฐ์ํ ์ ์๋ ๋ฌธ์ ์ ๊ทธ ํด๊ฒฐ ๋ฐฉ๋ฒ ๋ฑ๋ ์ค๋น๋์ด ์์ต๋๋ค.
๋ง๋ถ์ฌ JWT๋ฅผ ์ด์ฉํ ์ธ์ฆ ๋ฐฉ๋ฒ๊ณผ ์ฑ์ ์์ฑ๋๋ฅผ ๋์ด๊ธฐ ์ํ ํผ ๊ฒ์ฆ, ์ข ๋ ์ง๊ด์ ์ธ ๋ ์ง ๋ณด๊ธฐ ๋ชจ๋, ๊ทธ๋
๋ฆฝ์ ์ผ๋ก ์ฌ์ฌ์ฉํ ์ ์๋ ์ปดํฌ๋ํธ ๋ง๋ค๊ธฐ ๋ฑ์ ํตํด์ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์ ์ด๊ธ์ ๋์ด์ ์ค๊ธ ๊ฐ๋ฐ์๊ฐ ๋์์ ๋ ํ ๋ฒ์ฏค ๊ณ ๋ฏผํด์ผ ํ๋ ๋ถ๋ถ๋ค์ ํ์ตํ ์ ์๋๋ก ์ค๋นํ์ต๋๋ค. ํจ๊ป ๋์ ํด๋ด
์๋ค! (Svelte, Axios, Yup, Datejs)
์ด๋ฐ ๋ถ๋ค๊ป ์ถ์ฒํฉ๋๋ค ๐โโ๏ธ
ํ๋ก ํธ์๋ ๊ฐ๋ฐ์ ๊ด์ฌ์ด ์๋ ๋ถ
์น์ผ๋ก ์ข ๋ ๋น ๋ฅด๊ฒ ๋ฌด์ธ๊ฐ๋ฅผ ๋ง๋ค๊ณ ์ถ์ ๋ถ
HTML, JavaScript ๊ธฐ๋ณธ๊ธฐ๋ฅผ ํตํด ๋ฌด์ธ๊ฐ ๊ตฌํํ๊ณ ์ถ์ ๋ถ
์ค๊ธ FE ๊ฐ๋ฐ์๋ก ๋ฐ๋์ํ๊ณ ์ถ์ ์ด๋ณด ํ๋ฐํธ์๋ ๊ฐ๋ฐ์

ํ๋ฐํธ์๋ ์์
์ ๋ง์ณค๋ค๋ฉด ํด๋น ์๋น์ค์ API์๋ฒ๋ฅผ ๋ง๋๋ ๊ณผ์ ์ ๋ค์ด๋ณด์๊ธธ ์ถ์ฒ๋๋ฆฝ๋๋ค. ์ต์ Node.js ๊ธฐ์ ๋ค์ธ Fastify, Prisma ๊ทธ๋ฆฌ๊ณ Typescript๋ฅผ ์ด์ฉํ๋ ๋ฐฑ์๋ ๊ณผ์ ์ ์ค๋นํ์ต๋๋ค.
๊ฐ์ข ๋งํฌ: https://inf.run/mpCv8
Q&A ๐ฌ
Q. Svelte ๊ธฐ์ด ์ฌ์ฉ๋ฒ์ ์์์ผ ํ๋์?
Svelte ๊ธฐ์ด๋ ์ ๋ค๋ฅธ ๋ฌด๋ฃ ๊ฐ์๋ฅผ ํตํด 1~2์๊ฐ์ด๋ฉด ํ์ตํ ์ ์์ต๋๋ค. ํด๋น ๊ฐ์๋ฅผ ๋จผ์ ์๊ฐํ ๋ค์ ์ด ๊ฐ์๋ฅผ ์ถ๊ฐ๋ก ๋ค์ผ์๊ธธ ์ถ์ฒ๋๋ฆฝ๋๋ค.
Q. ๊ฐ๋ฐ ํ๊ฒฝ์ ์ด๋ป๊ฒ ๋๋์?
macOS, Windows, Linux ๋ฑ Node.js๋ฅผ ์ค์นํ ์ ์๋ ์ด๋ค PC์์๋ผ๋ ๊ฐ๋ฐํ๊ฒฝ์ ํ์ํ ํ๋ก๊ทธ๋จ์ ์ค์นํ๊ณ ์งํํ ์ ์์ต๋๋ค.
Q. ์ฑ
โ์ค๋ฒจํธ๋ก ์์ํ๋ ์นํ๋ฐํธโ์์์ ํ๋ก์ ํธ ๋ด์ฉ๊ณผ ์์ ํ ๊ฐ์๊ฐ์?
ํ๋ก์ ํธ ์์ฒด๋ ๊ฐ์ง๋ง ์ฑ
๋ด์ฉ ์ค ์๋น ๋ถ๋ถ์ ๋ณด์ํด์ ์์์ ๋ง๋ค์์ต๋๋ค. JWT ํ ํฐ์ ์ด์ฉํ ์ธ์ฆ๋ฐฉ๋ฒ๊ณผ ์คํฌ๋กค๊ณผ ๊ด๋ จ๋ ๋ถ๋ถ์ ํ๋์ ๋
๋ฆฝ๋ ์ปดํฌ๋ํธ๋ก ๋ถ๋ฆฌํ๋ ๊ณผ์ ๋ฑ์ด ์ถ๊ฐ๋์์ผ๋ ํน์ ์ฑ
์ ์ด๋ฏธ ํ์ตํ ๋ถ๋ค๋ ํ ๋ฒ์ฏค ๋ค์ด๋ณด๋ ๊ฒ์ ์ถ์ฒ๋๋ฆฝ๋๋ค.