🤓
Svelte(スベルト)のチュートリアルをやってみた!
はじめに
チュートリアルを進めながら自分なりに噛み砕いてメモったものになります。
こちら
今回やったSvelte(スベルト)のチュートリアルは >>Introduction
1.- 普通に他のweb系と同様に
{}
で値を埋め込める
Reactivity
2.- 関数などを実行した際内部で値を書き換えると対象の値が画面上でもreloadされる。
- ただしalertの方が処理順は早かった。
- リアクティブ宣言というものが存在し、代入をトリガーに動く特殊な文が書ける。これはオブジェクトの更新では動作しない。
Props
3.- 基本的にはReactとかと使い方は変わんなそう。
- ただし
$$props
という特殊な書き方ができる。
Logic
4.- 基本的には他のテンプレートエンジンと使い方の大枠は同じ。
-
#
が開始、:
が継続、/
が終了である。 - eachの使い方が多少特殊だったり、eachブロック内でのオブジェクトの更新は注意が必要である。
Events
5.- dispatchの使い方はよくある感じ。
- modifiersなるものがあって
on:click|once
のように記述できる。
Bindings
6.- よくある感じではあるが結構複雑なことが出来そう。
- 上記やりすぎると可読性を落とすのが明白なので程々にかな。
Lifecycle
7.- 基本的にはreactやvueとそんなに変わらんイメージ。
- tickは恐らく独自でわりかし使えそうかも。
Stores
8.- よくある状態管理のやつと大差なく、あまり特殊性を感じなかった。
Motion
9.- かなり特殊でanimationを制御できるような機能。他で見たことないかも。
Transitions
10.- 今まではCSS等で指定して複雑に設定していたものを比較的簡単に設定でき要素に動きを付けられる!
- ただし懸念としては当然今までは動きや見た目の部分はCSSで制御すると割っていた部分だがこれを使ってしまうとJSでの役割が複雑になる可能性はあるかなと思う。
- 個人的にkey blockのチュートリアルがとても好き。
Animations
11.- こちらもJS側でCSSがよりコントロールできる要素である。
Actions
12.- 他のFW等にもあるactionと同じかなと思う。普通にmethodと言い換えて問題ない気がする。
Advanced styling
13.- 動的にcssの値を変更出来たりclassを変えれたりと便利ではある。
- 同様の属性が定義されていてもstyleディレクティブの方が優先される。
- 他と同様ショートハンドが使える。
Component composition
14.- コンポーネントの配下の要素の位置をslotで固定したり、nameで特定の要素をコンポーネント呼び出し側から指定して挿入できる。また要素が空のケースのデフォルトも定義できる。
-
$$slots
で要素が渡ってきているか判定できる。 - 親コンポーネントにデータを渡したい時、slotにプロパティを定義出来て親コンポーネントからはletディレクティブで指定できる。
Context API
15.-
setContext()
で値や関数をセットすることができ、セットした後は各コンポーネント内で設定したもののgetter(getContext()
)を実行できる。 - 上記でセットする際のキーはなんでも良いが
const key = Symbol()
で完全に一意な文字列を取得できる。 - context apiはコンポーネントとその子孫のみでのやりとりになる。これはprotectedのイメージ。複数インスタンスを管理する際にお互いの状態に干渉しないようにできる。
- 上記の件例えばstoresだとアプリ上どこでも参照できるので干渉してしまう。global
Special elements
16.- コンポーネントや要素をより扱い易くし、分岐の数を減らすような工夫ができる。
Module context
17.- インスタンス化されたタイミングでの実行ではなくモジュールが評価されたタイミングで一度だけ実行されるように
<script>
を定義できる。 -
context="module"
のブロックからexportするとモジュールからエクスポートされたことになる。当然こいつをインポートすることができる。
Debugging
18.-
{@debug ...}
はdevtoolsを開くと実行を一時停止させられる。
Next steps
19.さいごに
- 今回やってみて長いけどやっぱり公式が出してるチュートリアルなので扱いに関してはよくわかった気がしています。
- この後はSvelteKitのドキュメントを読み進める予定です!!
- Twitterフォローして頂けたらと思います!仲良くしましょう!!
Discussion