12:46 PM
div( attributes: [ "style": """ display: flex; flex-direction: column; align-items: center; gap: 4px; """ ] ) {
12:47 PM
実際に簡単なウェブページを作ってみた感想としては
12:47 PM
とりあえず最低限動いてそうなのは良いとして
12:47 PM
↑のように、HTMLのアトリビュートを書いて、さらにその中の style アトリビュートに インラインスタイルを書こうとすると
12:48 PM
まあSwiftのトリプルクォート文字列の恩恵はデカくて、書けるは書けるんだけど、これでもまだやっぱり TypeScript で JSX を書くのと比べると、インデントや余計な記号が多くて煩わしい
12:49 PM
例えば一つの理想としては div(display: "flex", flex-direction: "column", align-items: "center", gap: "4px") って書ける事だけど
12:50 PM
  • ハイフンを含むラベルは作れない
  • アトリビュートやスタイルプロパティは多すぎて、多引数の関数として実装すると明らかにまともに動かない
12:50 PM
のでそのまんまこれはできない、絶対に1度は辞書的な動的なオブジェクトにラップする必要がある
12:51 PM
実際のところ JSX も、あれはJSに対するDSLのようなもので、コンポーネント式は関数呼び出しにトランスパイルされて、アトリビュートは辞書になるんで
12:51 PM
これは直接そのトランスパイル先を書いてるような状態に似ているんだけども。 逆にJSXの必要性がよくわかった。
12:52 PM
ハイフンを含むラベルについては、Reactに関しては、このようなkebab-caseからcamelCaseに全部置き換えたAPIを提供しており
12:54 PM
一つの正解なんだけど、他にもちょっと名前が変わってたりして、裏のHTML/CSSとはまたちょっと違う体系の学習が強いられるのが好きではない・・・
12:54 PM
classclassName, forhtmlFor などがある。(どちらもJSのキーワードと衝突している)
12:55 PM
Result Builder とか型付きの辞書とかでなんかいい感じにできんかなあ〜