반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- CSS
- custom command
- web vital
- ts error
- 비동기
- https
- devtools
- Testing
- rendering
- csr
- caching
- e2e
- JavaScript
- http3
- TLS
- SSR
- typeScript
- api test
- svelte
- vue
- ViTE
- 선택자
- msw
- QUIC
- import.meta.env
- Cypress
- aws
- vue3
- CloudFlare
- vue-cli
Archives
- Today
- Total
Develop Note by J.S.
[Svelte] Svelte란? 본문
반응형
스벨트란?
스벨트는 2016년 출시된 오픈소스 프론트엔드 프레임워크 입니다. 스벨트는 Vue, React와 동일한 기능을 가진 코드를 작성하였을 때 가장 적은양의 코드라인으로 작성이 가능하며, 가상돔 (Virtual Dom)을 사용하지 않는다는 특징이 있습니다.
* 동일 로직 비교
// 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>
// react
import React, { useState } from 'react';
export default () => {
const [a, setA] = useState(1);
const [b, setA] = useState(2);
function handleChangeA(event) {
setA(+event.target.value);
}
function handleChangeB(event) {
setB(+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>
);
};
// vue
<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>
가상돔 (Virtual Dom)?
- Vue, React에서는 무거운 Dom 전체를 조작하는 부분의 성능향상을 목적으로 가상의 Dom을 생성하여, 실제 Dom에 접근하지 않고 실제 돔을 추상화한 자바스크립트 객체를 구성하고, 변경사항 발생 시 메모리에 저장 된 Dom의 상태와 비교 한 뒤 최소한의 내용만 반영합니다.
스벨트의 Reactive
- 가상돔의 Reactive는 실제 Dom의 반영된다고 볼수 없기에 스벨트는 '진짜' Reative라고 설명합니다.
- 스벨트는 스스로를 프레임워크가 아닌 컴파일러로 소개합니다. 가상돔은 브라우저에서 동작되지만 스벨트의 경우 Build 시점에 javascript, html, css를 생성하기 때문에 기존의 바닐라 자바스크립트와 동일하게 동작됩니다.
- 다시 말하면 View의 동기화를 위한 작업이 런타임에 일어나는게 아닌 컴파일러로써 빌드시점에 정해지며 동기화 로직이 작성됩니다.
참고사이트
https://beomy.github.io/tech/svelte/vue-vs-svelte/
https://mycodings.fly.dev/blog/2022-12-17-compare-svelte-react-vue
반응형
'FrontEnd > Svelte' 카테고리의 다른 글
[Svelte] Router (0) | 2024.01.19 |
---|---|
[Svelte] 기본문법 #6 (Context) (0) | 2024.01.18 |
[Svelte] 프로젝트 시작하기 (0) | 2024.01.18 |
[Svelte] Svelte 기본문법 #5 (Lifecycle) (0) | 2024.01.17 |
[Svelte] Svelte 기본문법 #4 (Transition) (0) | 2024.01.17 |