2020/12/25 に公開 2243 views

このエピソードについて

注目が集まるフレームワーク『Svelte』を v2 から利用しており、 v3 も長らく利用しているという @miyoshi に、概要と所感を共有してもらいました。

@miyoshi による Svelte ドキュメントの日本語訳はこちら

概要

  • JSフレームワーク(コンパイラ)
  • 海外ではソコソコ知名度がある(2019年の stateOfJs でも評価が高い) https://2019.stateofjs.com/front-end-frameworks/
  • React などと違って、JSを変換して吐き出してくれるタイプのフレームワーク
  • コンセプトとしては Riot が近い https://riot.js.org/ja/
  • コンパイラなので必要ない機能などが生成したJSに含まれないのが最大のメリット
  • コンパイラであるため、WebComponent として出力することも可能
  • SSR も可能
  • IE9 対応も可能 - legacy コンパイルオプション
  • 仮想DOMではない
  • 双方向バインディングもできる
  • TypeScript も使えるようになった

Svelte のメリットとデメリット

メリット

  • 生成されるJSの容量が小さい
    • 小さい SPA なら 2-30KB 程度
  • 習得が比較的容易
    • Vue.jsRiot など他のフレームワークの経験がある場合
  • Store がビルトインされている
  • 依存が何もないので環境の立ち上げが楽
  • ボイラープレートコードがほぼない
  • コンパイラなのでコンパイル時のエラーである程度のミスを防げる

デメリット

  • 開発環境が貧弱
    • React における react-dev-tool みたいなものがない
  • ランタイムのエラーが分かりにくい
    • そもそも JS のエラーが分かりにくい
  • 日本語の情報が少ない(ほぼない)
    • 日本語だから少ないというわけでもなく英語でも少ない
  • コードの書き方に制約があまりないので、共同作業する際にはルールが必要
  • 採用実績はソコソコあるが、大手や日本での採用実績はあまりない
    • LINE では使われている

総論

  • おそらくコード量が少ないことによる恩恵を重要視しているフレームワーク
  • 「詰まる」とかなりキツいので、ある程度 JS に慣れてる人向け
  • 開発環境が整ったり、コミュニティが大きくなれば使用人口は一気に増えそう
  • まだ出てから2年も経っていないので、これからに期待

Refs