Slide 1

Slide 1 text

脱法Svelte ssssota

Slide 2

Slide 2 text

だれ ssssota {"github": "ssssota", "x": "ssssotaro"} フロントエンドエンジニア Svelte関連は完全に趣味でライブラリ作ったり svelte-exmarkdown svelte-twc [NEW] svelte-jsx-snippet [NEW]

Slide 3

Slide 3 text

Svelteにおける法とは 今回言いたい「法」とは、 1ファイル1コンポーネントの法。 Svelteでは、小さな単位の繰り返しでもコンポーネント化する か、インラインで書くかしかなかった。 しかしSvelte 5では...

Slide 4

Slide 4 text

Snippetsの登場 Svelte 5にて、コンポーネント内で再利用可能な要素を抽出す る仕組み Snippets が導入された 🚀 {#snippet reusable()}
再利用可能な要素
{/snippet} {@render reusable()} これ(合法的な手法)で万事解決...

Slide 5

Slide 5 text

ちょっと待てぃ!!1
{@render children()}
↑これを再利用したいときは? {#snippet styled_div(children)}...{/snippet} {@render styled_div(hoge)} Snippetの引数を使えばできないこともない... 例だと hoge もSnippetである必要があり、かなりしんどい。

Slide 6

Slide 6 text

svelte-twc そんなあなたに、svelte-twcを紹介します 🚀 import { twc } from "svelte-twc"; const Div = twc.div`flex flex-col gap-2`;
Hello Svelte!
react-twcをパクったから着想を得た、(脱法)ライブラリ。 コンポーネント内でclass注入済コンポーネントが作成可能に!

Slide 7

Slide 7 text

これでコンポーネントもサクサク作れるぞ! よし、じゃあテストを書こう! import { render } from '@testing-library/svelte'; import MyComponent from './MyComponent.svelte'; it('...', () => { render(MyComponent, { children: '¯\_(ツ)_/¯', // ...????? }); }); どうやってSnippet渡すんだ!?

Slide 8

Slide 8 text

svelte-jsx-snippet そんなあなたに、svelte-jsx-snippetを紹介します 🚀 it('...', () => { render(MyComponent, { children:
🥰
, }); }); JSXをSnippetsとして処理でき、 コンポーネント外でSvelteの要素が書けるようになる!

Slide 9

Slide 9 text

Svelte 5の出力を見てみよう Svelte 4以前と比較して、Svelte 5の出力は非常に読みやすく! 基本的には、1コンポーネントにつき関数が1つ生成される。 変数名なども嫌に短縮されていないので、理解しやすい。 再現もしやすくなった結果、脱法しやすくなった! ※ まだRelease Candidateなので内部APIもたまに変わって壊れ ることも多々ある。 ※ このスライドはSvelte 5 + svelte-exmarkdown + svelte-twcを 使って作成されています。

Slide 10

Slide 10 text

Let's hack Svelte!