Nobukazu Hanada
あるところでは、「サンタさん」というあだ名で呼ばれる事が在ります。 花田 (はなだ) 恒一(のぶかず)と申します。 恒一(こういち)とは読みません。 Lispが好きです。
VanillaJSでGUIを作る人間から見たSvelteの良さ
— はなだ のぶかず
とりあえず、Svelteの話をする前に簡単に
Original MVC
MVVM
Web MVC (MVC2)
Client MVC (Flux)
View
Controller
Model
入力
操作
通知
表示
参照
No仮想DOMについて整理するね。
Virtual DOM
update
Real DOM
最初からこう書けばよくね?
Model
通知
Model
仮想Dom
仮想Dom
ここが状態を持たない関数になればいい!!!
=宣言的!!!
仮想Domの差分比較
実DOMの操作
Model
通知
Model
仮想Dom
いやいや、Dom API呼びすぎて、
遅いでしょ?
実Dom
Model
通知
View
通知メッセージに合わせて適切に更新!
差分検知の分だけ、更新するのだるい。
なんだったら、自分で枝刈りしてるし..
Viewオブジェクトを生成して、
<form on:submit|preventDefault={submit}>
<input bind:value={text}>
</form>
<ul>
{#each post as aPost}
<li on:click={e=>{ deletePost(aPost) }}>{aPost}</li>
{/each}
</ul>
for (i = 0; i < each_value.length; i += 1) {
const child_ctx = get_each_context(ctx, each_value, i);
if (each_blocks[i]) {
each_blocks[i].p(child_ctx, dirty); // リストの更新
} else {
each_blocks[i] = create_each_block(child_ctx);
each_blocks[i].c(); // リストの追加
each_blocks[i].m(ul, null); // リストのマウント
}
}
for (; i < each_blocks.length; i += 1) {
each_blocks[i].d(1); // リストの削除
}
書いてくれる!
By Nobukazu Hanada
あるところでは、「サンタさん」というあだ名で呼ばれる事が在ります。 花田 (はなだ) 恒一(のぶかず)と申します。 恒一(こういち)とは読みません。 Lispが好きです。