UGA Boxxx

つぶやきの延長のつもりで、知ったこと思ったこと書いてます

【Svelte】Svelteとは

State of JS 2020 をみていて、「Svelte」がフロントエンドフレームワークの満足度ランキングトップになっていたので調べた

f:id:uggds:20210125141644p:plain State of JS 2020より

Svelteとは

svelte.dev

ReactやVueのようなUIを宣言的に記述してWebアプリケーションを作るライブラリ

ドキュメントではReactとVueの簡単な実装比較がある
https://svelte.dev/blog/write-less-code

<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>

コードの記述量が一番少なくかける点が特徴らしい

また、コードは.svelteファイル内に記述し、バニラJavaScriptにトランスパイルして使用するのでサイズは小さく抑えられる

仮想DOMではない

Reactのような仮想DOMフレームワークで使用される差分アルゴリズムは高速ではあるが、DOM操作に加えて差分計算などのオーバーヘッドがあったり、実装によっては更新のたびに不注意に再計算される可能性があり非効率な部分がある

Svelteはコンパイル時に効率的に差分を検知してDOMに反映するコードを生成することができるので高速とのこと
https://svelte.dev/blog/virtual-dom-is-pure-overhead

まとめ

  • シンプルというより、イージーという印象
  • Reactとは書き方が異なるので学習コストはかかりそう

満足度トップになる由縁がわからなかったが、高速化に目を向けた時にまた注目したい

他参考

https://zenn.dev/toshitoma/articles/what-is-svelte