Riot.js のメンテナーさんが、一緒に Riot をメンテしてくれる人を募集している
Looking for a co-maintainer · riot/riot · Discussion #3062
https://github.com/riot/riot/discussions/3062
全然技術レベルの違う話ではあるけど、自分もデザイナーなのに #反骨スタック っぽい選択をしてきた気がしている。
正確には、自分のスキルと時間的制約とワンオペでの制作・開発という事情でその選択肢しかなかったという側面が大きくて、能動的に選べる選択肢がそれしか無かったんだけど。
ただ、確かに低レイヤーを触る動機が生まれるという意味では良い面もあった気はする。
自分の生存戦略が、なるべくフレームワークとかライブラリに依存しないスキルの勉強にかける、だったから、そういう観点で当時選んだのが「薄い」フロントエンドライブラリとしての #RiotJS だったし、未だに素の #CSS を書きたくなってしまう性質に繋がっている気がする。
#RiotJS の V10 Alpha がでてるな
https://github.com/riot/riot/releases/tag/v10.0.0-alpha.1
これは alpha 1 だけどもう Alpha 2も出てる。
メジャーバージョンアップと言っても、そのレベルの破壊的変更があるから、というだけみたいだけど
#RiotJS いつのまにか `ref` expressions が追加されてドキュメントにも説明が追記されていた
#WebComponents である以上は #CustomEvent でいろいろやるのがよいのだと気がついたので #RiotJS の #WebComponents サンプルもその方向で調整してみている
#RiotJS で #WebComponents サンプル試して気になってた挙動、早速ひとつ修正してもらえた。
https://github.com/riot/custom-elements/issues/20#issuecomment-2453219999
もうひとつの Scoped CSS の挙動もオプションの存在を教えてもらったので、コンパイル方法をかえることで解決できそう
同じ方法で、関数を渡せば、子コンポーネントから親のコンポーネントの関数を発火することもできた
#WebComponents な Custom Elements である以上、属性値では基本 String しか渡せないはずなので
> Riot.js passes all primitive data (strings, numbers, booleans) to Custom Elements as attributes
これは Custom Elements としてはちょっと解せないんだよな…
今手元で試しても props は全部 strings になっちゃうし。
ただ、
> It passes complex data (Objects, Arrays) to Custom Elements as properties.
これについては、たとえば親コンポーネントの中で
```
this.root.shadow.querySelector('子コンポーネント要素').プロパティ名
```
という風にすると、親から子の中のプロパティに Object とか Array を渡すことができた。
#RiotJS のセクションに
> By default, Riot.js passes all primitive data (strings, numbers, booleans) to Custom Elements as attributes. It passes complex data (Objects, Arrays) to Custom Elements as properties.
って書いてあるけど、属性値で渡したものは全部 strings になる気がするし、Objects, Arrays をプロパティーとして渡せる、って書いてあるけどどういうことだろう…?
#RiotJS で #WebComponents なサンプル作りを昨夜試して、色々 riotjs/custom-elements のバグっぽい挙動も報告できたので良かったんだけど、#WebComponents の属性値に基本テキストしか渡せないのは、やはり感覚的にはちょっと不便に感じる時あるな…props バケツリレーすればとりあえずなんとかなるかなみたいになっちゃってる自分が良くないかもなので別のパターンを学ぶ良いきっかけかもしれないけど。
#CSS が外部に伝搬しない #shadowDOM は使い方次第ではすごい強力な気はしている。
#WebComponentsb の template の書きづらさは Riot みたいなコンポーネントベースのフレームワークを使って解決するほうがよさそうだなと思ってるけど、標準技術の中でもう少し柔軟に書けるようになる予定とかないんだろうか…構造がある程度複雑になると、フレームワーク使わずにやろうとすると #HTML 側に template で書いておいて #JS 側から getElementById するみたいなやり方しか自分は思いついてないんだけど、できればコンポーネントはコンポーネントとして別ファイル化したいし… #PHP とかフロント以外のところでコンポーネント用の template を分けておけばいいのかもしれないけどなんかそれもなあとか考え事をしながら人間ドックに向かっている朝。
#RiotJS のcustom elements モジュールを使って、#WebComponents なパーツを作れるようにしたけど、コンポーネント内に書いた #CSS の :host がコンポーネントタグ名に変換されちゃうという、バグというかコンパイラーが #WebComponents に対応しきれていない挙動を見つけた
今夜 issue 書く!(と自分を追い込む
#RiotJS の今回のアップデート、最近 issue によく顔を出すエンジニアさんがメンテナーさんに結構グイグイいってて、良い意味でメンテナーさんの個人プロジェクト感を脱する契機になりそう(なってほしい