본문으로 건너뛰기

Svelte 개요.

Svelte는 코드를 빌드 시간에 컴파일하여 사용자 인터페이스 (UI)를 구축할 수 있는 현대적인 JavaScript 프레임워크입니다. React나 Angular와 같은 다른 프레임워크와는 다릅니다. 가상 DOM에 의존하고 런타임에서 업데이트를 수행하는 대신, Svelte는 코드를 DOM을 직접 조작하는 매우 효율적인 JavaScript로 변환하여 더 빠르고 성능이 우수한 애플리케이션을 만듭니다.

Svelte의 역사

Svelte는 Rich Harris에 의해 만들어져 2016년에 처음 출시되었습니다. 이는 전통적인 프레임워크의 한계를 극복하고 웹 애플리케이션을 더 효율적으로 구축할 수 있는 방법을 제공하기 위해 설계되었습니다. 출시 이후로 Svelte는 간결성, 성능 및 작은 번들 크기로 개발자들 사이에서 인기를 얻고 있습니다.

Svelte의 기능

  1. 선언적 구문: Svelte는 선언적 구문을 사용하여 UI 구성 요소를 설명하므로 코드를 이해하고 유지 관리하기 쉽습니다.

  2. 반응형 바인딩: Svelte는 반응형 바인딩을 제공하여 동적이고 응답성 있는 UI 구성 요소를 생성할 수 있습니다. 변수와 표현식을 요소에 바인딩할 수 있으며, 기본 데이터가 변경되면 자동으로 업데이트됩니다.

    <script>
    let count = 0;
    </script>

    <button on:click={() => count += 1}>
    {count}번 클릭되었습니다
    </button>

    위의 예제에서 count 변수는 버튼의 텍스트 내용에 바인딩되어 있습니다. 버튼을 클릭할 때마다 count 변수가 증가하고 텍스트가 이에 맞게 업데이트됩니다.

  3. 컴포넌트 기반 아키텍처: Svelte는 컴포넌트 기반 아키텍처를 촉진하여 재사용 가능한 UI 구성 요소를 생성할 수 있습니다. 컴포넌트는 자체 상태, 속성 및 라이프사이클 메서드를 가질 수 있습니다.

    <script>
    export let name;
    </script>

    <h1>{name}님, 안녕하세요!</h1>

    이 예제에서 name 속성이 컴포넌트에 전달되고 <h1> 태그 내에 렌더링됩니다.

  4. 스코프 CSS: Svelte는 스코프 CSS를 지원하여 컴포넌트 내에서 정의된 스타일만 해당 컴포넌트에 적용됩니다. 이를 통해 서로 다른 컴포넌트 간의 스타일 충돌을 방지할 수 있습니다.

    <style>
    h1 {
    color: blue;
    }
    </style>

    <h1>Svelte 안녕하세요!</h1>

    <style> 태그 내에 정의된 CSS 스타일은 동일한 컴포넌트 내의 <h1> 태그에만 적용됩니다.

  5. 애니메이션: Svelte는 내장된 애니메이션 지원을 제공합니다. 키프레임, 트랜지션 및 CSS 속성을 사용하여 요소를 쉽게 애니메이션화할 수 있습니다.

    <script>
    let visible = false;
    </script>

    <button on:click={() => visible = !visible}>
    전환
    </button>

    {#if visible}
    <div transition:fade>
    이 요소는 사라지고 나타납니다
    </div>
    {/if}

    이 예제에서는 버튼을 클릭할 때마다 <div> 요소가 사라지고 나타납니다. transition:fade 지시문이 애니메이션을 처리합니다.

  6. 서버 사이드 렌더링: Svelte는 서버 사이드 렌더링 (SSR)을 지원하여 컴포넌트를 서버에서 렌더링하고 HTML을 클라이언트로 전송할 수 있습니다. 이는 성능과 검색 엔진 최적화 (SEO)를 개선합니다.

Svelte의 예시

  1. 할 일 목록: Svelte를 사용한 간단한 할 일 목록 예시입니다:

    <script>
    let todos = [];
    let newTodo = '';

    function addTodo() {
    todos = [...todos, newTodo];
    newTodo = '';
    }
    </script>

    <input bind:value={newTodo} placeholder="새로운 할 일 추가하기">
    <button on:click={addTodo}>추가</button>

    {#each todos as todo}
    <div>{todo}</div>
    {/each}

    이 코드는 목록에 새로운 할 일을 추가할 수 있도록 합니다. todos 배열은 할 일 목록을 유지하고, "추가" 버튼이 클릭될 때 addTodo 함수가 호출됩니다.

  2. 이미지 갤러리: Svelte를 사용한 이미지 갤러리 예시입니다:

    <script>
    let images = ['image1.jpg', 'image2.jpg', 'image3.jpg'];
    let currentIndex = 0;

    function nextImage() {
    currentIndex = (currentIndex + 1) % images.length;
    }
    </script>

    <img src={images[currentIndex]} alt="갤러리 이미지">
    <button on:click={nextImage}>다음</button>

    이 코드는 images 배열에서 이미지를 표시하고 "다음" 버튼을 사용하여 이미지를 순환하도록 합니다.

공식 Svelte 웹사이트에서 더 많은 예시와 자세한 문서를 찾을 수 있습니다: https://svelte.dev/

Svelte는 강력하고 효율적인 웹 애플리케이션 개발 방법을 제공합니다. 선언적 구문, 반응형 바인딩 및 컴포넌트 기반 아키텍처를 통해 전통적인 JavaScript 프레임워크에 대한 우수한 대안을 제공합니다.