Download ZIP
확장 프로그램 설치:
Svelte for VS Code
npm install
npm run dev
Svelte(스벨트)는 컴파일러 기반으로 실행되는 프레임워크입니다. 이는 Virtual DOM이 없고, Runtime에 로드할 프레임워크가 없음을 의미합니다.
그러면 Svelte의 주요 특징과 장점을 알아봅시다.
적은 코드로 개발 시간을 단축시키고, 러닝 커브가 낮습니다. 다음은 프레임워크별로 코드 길이를 나타냅니다.
<script>
let a = 1
let b = 2
</script>
<input type="number" bind:value={a} />
<input type="number" bind:value={b} />
<p>{a} + {b} = {a + b}</p>
import React, { useState } from 'react'
export default function () {
const [a, setA] = useState(1)
const [b, setB] = useState(2)
function handleChangeA(event) {
setA(Number(event.target.value))
}
function handleChangeB(event) {
setB(Number(event.target.value))
}
return (
<div>
<input type="number" value={a} onChange={handleChangeA} />
<input type="number" value={b} onChange={handleChangeB} />
<p>{a} + {b} = {a + b}</p>
</div>
)
}
<template>
<div>
<input type="number" v-model.number="a" />
<input type="number" v-model.number="b" />
<p>{{a}} + {{b}} = {{a + b}}</p>
</div>
</template>
<script>
export default {
data: function() {
return {
a: 1,
b: 2
}
}
}
</script>
Svelte는 Virtual DOM을 사용하지 않습니다. Virtual DOM은 필요한 부분만 DOM에 조작함으로써 충분히 빠르고 유용하지만 Svelte는 런타임이 아닌 컴파일 타임에 빌드되면서 DOM 구성이 완료된다. Virtual DOM을 생성하고 비교하는 연산과 실제 DOM에 업데이트해야 하는 과정이 생략되어 리액트보다 렌더링 속도가 빠르다.
Virtual DOM이란 초기에 Virtual DOM을 생성하고 Snapshot으로 남겨서 이전 Snapshot과 비교한다. 변경이 생기면 변경된 부분(요소)만 Real DOM에 반영하게 된다.
반응성은 변경된 값이 DOM에 자동으로 반영됨을 의미합니다. Svelte는 별도의 Setter 없이 값의 할당만으로 업데이트를 트리거할 수 있습니다. 이렇게 상태를 유지할 수 있는 이유는 컴파일시 스벨트라는 프레임워크가 대신 해줍니다. 따라서 개발자는 React의 useState()
와 같은 Hook 내장 API를 따로 사용할 필요없이 순수 js 코드 짜는 것처럼 작성할 수 있습니다.
현재 프로젝트는 매우 단순하게 개발하였습니다.
Vite(비트)를 이용해서 프로젝트 초기 세팅을 하였습니다.
Vite란 Vue 창시자가 만든 "빠르다"를 의미하며, 프로젝트 빌드 도구로써 기존 웹팩보다 수십배 빠릅니다. Vite는 로컬에서 번들링을 하지 않고 필요시 rollup.js를 사용합니다.
/src/components/
디렉토리에 관리되며, 반복되는 부분이 있으면 컴포넌트를 만들어서 import하여 사용합니다.
사용할 페이지들은 /src/pages/
디렉토리에 관리되며, 라우팅 설정 파일은 routes.svelte
에 있습니다.
REST API 통신하기 위해 axios
라이브러리를 사용하였고, 비동기 통신은 async
, await
문법을 사용하였습니다. 현재 구현은 /src/pages/DataModel.svelte
만 되어 있으며, 기능은 게시판 목록, 페이지네이션, 검색입니다.
Data Hub swagger에 있는 API는 CORS 에러가 나서 당장 사용을 못했고, 예시로 제공해주는 API를 가져다 사용하였습니다.
프론트 프레임워크 사용을 해본 경험이 적다보니 컴포넌트 분리를 어떻게 해야할지 고민
등등 많지만 실제 적용하는데 어려움이 있었음. 사용 방법이나 커스터마이징하기 쉽지 않았음.
API 통신할 때 반복되는 코드들이 있는데 이를 어떻게 하면 통일해서 사용할 수 있는지 고민 필요
SvelteKit은 웹 애플리케이션을 구축하기 위한 프레임워크로써 서버 측 렌더링(SSR), 라우팅 및 API 호출을 쉽게 호출할 수 있습니다. 예를 들어 React의 Nextjs나 Vue의 Nuxtjs 같은거라고 생각하면 됩니다.