日本語ドキュメントができました (2021-07-24)
なのでこんなスクラップを見るよりこっちを見ましょう
https://www.solidjs.com/docs/latest/api?lang=ja
https://www.solidjs.com/docs/latest/api?lang=ja
https://www.solidjs.com/guides/getting-started
www.solidjs.com
SolidJS の日本語ドキュメントが公開されました
zenn.dev
(2021-06-03)
仮想DOMはパフォーマンスが悪いみたいな記事を見てへーと思って非仮想DOMのなにかを試してみようと思った
この分野だと間違いなくSvelteが一番ポピュラーで人気上昇中だがどうしてもあのテンプレート構文的なのが好きになれない・・・
というわけで見つけたのが
https://github.com/solidjs/solid
この分野だと間違いなくSvelteが一番ポピュラーで人気上昇中だがどうしてもあのテンプレート構文的なのが好きになれない・・・
というわけで見つけたのが
https://github.com/solidjs/solid
Reactと同じようにjsxが使えてそれでいて仮想DOMを使わないライブラリとのこと。もうすぐ1.0リリースらしい。もうrcに到達してる
(2021-06-03)
情報があまりなかったのでためらっていたが絶賛制作中の公式サイトを見つけた
https://github.com/solidjs/solid-site/tree/dev
のでそこにあるチュートリアルを一足先にやっていく
おそらく1.0に合わせて公開される気がするのでもうすぐなにもしなくても
https://solidjs.com
から見れるようになる気がする
https://github.com/solidjs/solid-site/tree/dev
のでそこにあるチュートリアルを一足先にやっていく
おそらく1.0に合わせて公開される気がするのでもうすぐなにもしなくても
https://solidjs.com
から見れるようになる気がする
(2021-06-03)
公式サイトにももちろんsolidjsが使われていて、さらにバンドラーにはViteを使っているようだ。Vite用のプラグインもある。(https://github.com/solidjs/vite-plugin-solid)
ローカルで開発中のサイトを起動する
https://localhost:3000 にアクセスするといい感じのサイトが立ち上がっている。
やはりViteはビルドが爆速で素晴らしい
(2021-06-03)
トップページを見るといろいろよさげな事が書いてある。
リアクティブプログラミングや単方向データバインディングなどのReactの哲学に従いつつ仮想DOMではない方法でレンダリングをしているとのこと。
また、コンポーネントは1度しか実行されず、hooksとバインディング(effectとかのこと?)が再実行されるらしい。Reactはコンポーネントが再実行されるんだったような気がするからそこが違いなんだろうか
リアクティブプログラミングや単方向データバインディングなどのReactの哲学に従いつつ仮想DOMではない方法でレンダリングをしているとのこと。
また、コンポーネントは1度しか実行されず、hooksとバインディング(effectとかのこと?)が再実行されるらしい。Reactはコンポーネントが再実行されるんだったような気がするからそこが違いなんだろうか
Resoucesのページにはsolidjsの作者の記事がいろいろ載っている。
https://dev.to/this-is-learning/components-are-pure-overhead-hpm
https://dev.to/this-is-learning/components-are-pure-overhead-hpm
(2021-06-03)
まだ開発中のようだがTutorialがしっかり整備されていてMonacoエディタで快適にチュートリアルを進めることができる。
基本のカウンターアプリはこんな感じ。(以下のコードは全てチュートリアルからのコピペ)
createSignal
はパッと見hooksだがsolidjsにはhooksのルールがないので自由な場所に書けるらしい。また
useState
とは違い、値ではなくgetterが返ってくる。(2021-06-03)
Effectもある
createMemo
でメモ化もできる。useMemo
と同じような感じかな?制御フロー (2021-06-03)
ここで
Show
コンポーネントという見慣れない物が登場仮想DOMを使わない代償として、jsxでそのまま
ただSolidのコンパイラは三項演算子をサポートしているとも書いてある。
Array.prototype.map
とかやると全てのコンポーネントが再レンダリングされてしまうため、このような専用コンポーネントを用意しているようだ。ただSolidのコンパイラは三項演算子をサポートしているとも書いてある。
Show
コンポーネントを使わなくてもいいということだろうか?(2021-06-03)
Showコンポーネントは出し分けをするだけだが他にも制御構造用のコンポーネントがいろいろある。
For
Index
ForとIndexの違いとして各アイテムとindexのプリミティブとgetterという関係が逆になっている。
恐らく
なので非プリミティブな配列には
恐らく
For
では配列の中身に基いて再レンダリングが行われ、Index
ではindexに基いて再レンダリングが行われている(日本語が下手)なので非プリミティブな配列には
For
を使い、プリミティブなものにはIndex
を使うとよいとのこと。(2021-06-03)
次に
Switch
コンポーネント正直いままでのもテンプレート構文味があって若干微妙に感じていたが、これに関してはtypescriptの型が正常に判定されないためかなりビミョーだと思った。
https://github.com/solidjs/solid/issues/199
一応ワークアラウンドはあるようだがいちいちこれを書くのかという感じでうーん
https://github.com/solidjs/solid/issues/199
一応ワークアラウンドはあるようだがいちいちこれを書くのかという感じでうーん
(2021-06-03)
Portal
コンポーネントこれはReactのポータルと同じような感じかな
ErrorBoundary
コンポーネントReactのError Boundaryと同じように例外をキャッチできるものだが、Reactのようにクラスコンポーネントでないと使えないみたいな制限はない。そもそもsolidjsには関数コンポーネントしかないはず
ライフサイクル (2021-06-03)
solidのライフサイクルメソッドには
特筆すべきことはなさそう?
onMount
とonCleanup
がある。特筆すべきことはなさそう?
バインディング (2021-06-04)
style
Reactのようにstyleプロパティにオブジェクトを入れてスタイルを適用できるが、Reactと違いcamelCaseではなく、普通のhtmlで指定するのと同じkebab-caseを使う。
これの利点としてcss変数が使える。なるほど。
これの利点としてcss変数が使える。なるほど。
(2021-06-04)
class
classNameではなく普通にclassが使える、またclassListというものもある。
ref/forwardRef (2021-06-04)
特に難しいことをしなくても使える。useRefみたいなのはいらない。
カスタムディレクティブ (2021-06-04)
(element, valueAccesor)
を受け取る関数をインポートして接頭辞としてuse:
を関数名の前につけたディレクティブを設定することでカスタムディレクティブを使える。ReactにはないがVueとかにはあるようだ。便利そうではあるが標準から外れているのでサンプルではdead codeとして削除されないようにしてたりするなどちょっと面倒臭いことがありそう。
Props (2021-06-04)
// あとで読む
🎉1.0 (2021-06-29)
v1.0がリリースされた。
https://github.com/solidjs/solid/releases/tag/v1.0.0
https://github.com/solidjs/solid/releases/tag/v1.0.0
公式サイトも公開されていた。これで使う人が増えるかも?
https://www.solidjs.com
https://www.solidjs.com