Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
脱法Svelte / Evasion of svelte rules
Search
TOMIKAWA Sotaro
May 30, 2024
Programming
1
100
脱法Svelte / Evasion of svelte rules
https://github.com/ssssota/evasion-of-svelte-rules
TOMIKAWA Sotaro
May 30, 2024
Tweet
Share
More Decks by TOMIKAWA Sotaro
See All by TOMIKAWA Sotaro
新しいAPI createRawSnippet触ってみた / What is the createRawSnippet?
ssssota
1
42
Documentation testsの恩恵 / Documentation testing benefits
ssssota
2
750
TypeScriptとDocumentaion tests / Documentation tests with TypeScript
ssssota
7
3.6k
Svelteでライブラリを作る / Make your library with Svelte
ssssota
0
96
現代のReactivityとSvelteの魔法
ssssota
0
1.7k
型付きdotenv
ssssota
0
220
Other Decks in Programming
See All in Programming
『ドメイン駆動設計をはじめよう』中核の業務領域
masuda220
PRO
5
840
オートマトン学習しろ / Do automata learning
makenowjust
3
100
私のEbitengineの第一歩
qt_luigi
0
410
1人で挑むSwiftコンパイラ 〜型システム入門編〜
s_shimotori
0
310
ECMAScript仕様を読むのに必要な知識 - ダイジェスト版
syumai
4
2.5k
Desafios e Lições Aprendidas na Migração de Monólitos para Microsserviços em Java
jessilyneh
2
130
フロントエンドカンファレンス北海道2024 『小規模サイトでも使えるVite 〜HTMLコーディングをよりスマートに〜』長谷川広武(ハム)
h2ham
1
2.5k
ドメイン駆動設計を実践するために必要なもの
bikisuke
3
290
Meet BrowserEngineKit
swiftty
0
190
TypeScriptで 負荷テストを書こう 〜k6のシングルバイナリの秘密〜
dora1998
7
2.8k
Rustではじめる負荷試験
skanehira
5
1.1k
LR で JSON パーサーを作る / Coding LR JSON Parser
junk0612
2
170
Featured
See All Featured
Build The Right Thing And Hit Your Dates
maggiecrowley
29
2.2k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
165
48k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
246
1.3M
GraphQLとの向き合い方2022年版
quramy
43
13k
Embracing the Ebb and Flow
colly
83
4.4k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
226
52k
Into the Great Unknown - MozCon
thekraken
28
1.4k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
662
120k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
27
8.9k
For a Future-Friendly Web
brad_frost
173
9.3k
We Have a Design System, Now What?
morganepeng
48
7.1k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
27
1.6k
Transcript
脱法Svelte ssssota
だれ ssssota {"github": "ssssota", "x": "ssssotaro"} フロントエンドエンジニア Svelte関連は完全に趣味でライブラリ作ったり svelte-exmarkdown svelte-twc
[NEW] svelte-jsx-snippet [NEW]
Svelteにおける法とは 今回言いたい「法」とは、 1ファイル1コンポーネントの法。 Svelteでは、小さな単位の繰り返しでもコンポーネント化する か、インラインで書くかしかなかった。 しかしSvelte 5では...
Snippetsの登場 Svelte 5にて、コンポーネント内で再利用可能な要素を抽出す る仕組み Snippets が導入された 🚀 {#snippet reusable()} <div>再利用可能な要素</div>
{/snippet} {@render reusable()} これ(合法的な手法)で万事解決...
ちょっと待てぃ!!1 <div class="flex flex-col gap-2"> {@render children()} </div> ↑これを再利用したいときは? {#snippet
styled_div(children)}...{/snippet} {@render styled_div(hoge)} Snippetの引数を使えばできないこともない... 例だと hoge もSnippetである必要があり、かなりしんどい。
svelte-twc そんなあなたに、svelte-twcを紹介します 🚀 <script lang="ts"> import { twc } from
"svelte-twc"; const Div = twc.div`flex flex-col gap-2`; </script> <Div>Hello Svelte!</Div> react-twcをパクったから着想を得た、(脱法)ライブラリ。 コンポーネント内でclass注入済コンポーネントが作成可能に!
これでコンポーネントもサクサク作れるぞ! よし、じゃあテストを書こう! import { render } from '@testing-library/svelte'; import MyComponent
from './MyComponent.svelte'; it('...', () => { render(MyComponent, { children: '¯\_(ツ)_/¯', // ...????? }); }); どうやってSnippet渡すんだ!?
svelte-jsx-snippet そんなあなたに、svelte-jsx-snippetを紹介します 🚀 it('...', () => { render(MyComponent, { children:
<div> 🥰 </div>, }); }); JSXをSnippetsとして処理でき、 コンポーネント外でSvelteの要素が書けるようになる!
Svelte 5の出力を見てみよう Svelte 4以前と比較して、Svelte 5の出力は非常に読みやすく! 基本的には、1コンポーネントにつき関数が1つ生成される。 変数名なども嫌に短縮されていないので、理解しやすい。 再現もしやすくなった結果、脱法しやすくなった! ※ まだRelease
Candidateなので内部APIもたまに変わって壊れ ることも多々ある。 ※ このスライドはSvelte 5 + svelte-exmarkdown + svelte-twcを 使って作成されています。
Let's hack Svelte!