Remix3について書いてみます。
Remix3では、コンポーネントのレンダリング・再レンダリングのマニュアル(手動)でのコントロールを可能にしています。
Remix開発チームがPreactからフォークして開発中のライブラリ(Preactフォーク)がまだ公開されるレベルになっていないため、想像にすぎませんが、これらのメソッドは、Preactフォークの内部で呼ばれることになるはずです。
リリース版Remix3では、Remix.Handle.render、Remix.Handle.updateをユーザーが直接記述する機会は少なくなるはずです。
contextでの取り回しにProviderコンポーネントをかますことが必須のReactのcontextとは違い、RemixのcontextはVue.js3のprovide/injectライクにset/getで取り回しができます。
domパッケージ(モジュール)の機能として提供されています。
Preactフォークでは、利便性のために、Remix.Handle.contextへのエイリアス?が提供されるかもしれません。
Remix3では、コンポーネントに記述されたステート(状態)の保持は、このセットアップスコープによって行われます。
Remix3では、コンポーネントはクロージャとして扱われます。
Remix3の中でコンポーネントは一度クロージャとして実行され、実行結果が(内部変数に)格納/保持され、(同一コンポーネントから)参照可能で、関数であるのに恰もオブジェクトであるかのように扱えるようになっています。
セットアップスコープでは、ステートはミュータブル(mutable: 可変)な値として扱われます。
Remix3では、ReactやPreactベースのFWとは異なり、(セットアップスコープの段階では)ステートはミュータブル(mutable: 可変)な値として扱われます。
Preactフォークで、ステートがミュータブルな値として扱われるのか、イミュータブル(immutable: 不変)な値として扱われるのか、は不明です。
ステートの保持(自体)は(Preactフォークからは独立した)セットアップスコープで行うため、Preactフォークでステートがミュータブルな値として扱われる場合、Preactフォークに(ステート保持機能の実装は必要ないので)ステート管理機能(API)が存在しない可能性は高いです。
Reactではreact-domパッケージがDOM API etcをカプセル化(隠蔽)していて、Reactの(抽象化された)インターフェイス(API)を介してしかDOM API etcにアクセスできないのに対して、Remix3はDOM API/イベントetcが独自のインターフェイス(API)をもつモジュールとなっていて、それぞれにアクセス可能となっています。
Preactフォークは、Reactのように内部にイベントやレンダリングetc全てを内包するのではなく、イベントまわりはevents、DOMまわりはdom、他もそれぞれ別モジュール?、として(別に)存在し、Preactフォーク本体はそれらのモジュールを内部で利用する(Reactとは異なり)かなり?コンパクトなライブラリになると考えられます。
Remix3では、特定のライブラリに強く依存しない方針なので、自前で用意するPreactフォークにさえ強く依存しないしくみにしようとしているのかもしれません。
Preactフォークがステート(状態)管理のAPIを提供しないのか、PreactデフォルトのReactライクなステート管理APIを採用するのか、Preact SignalsのようにSignalsを採用する(Preact Signalsもどき?を統合する)のか、はたまた、第3のステート管理用APIを採用するのか、定かではありません。
Remix3では、ステートの保持はセットアップスコープが担当するので、Preactフォークでステート管理のAPIが提供される場合、それはReactともPreactとも似て非なるモノです。
現状のプロトタイプ?をAlien Signalsと組み合わせて利用しても面白いかと思います。
ブラウザ(のレンダリングまわり(タイミングを含む))の実装の改善により仮想DOMが役割を終えようとしています。
Remix v3に採用されるはずのPreactフォークが仮想DOMをPreactから引き継ぐのか、仮想DOMから離脱しSolid.jsのように生DOM API+αで構築されるのか、興味深いです。
Remix v3は、WEB標準重視の方針のもと、開発されているので、Preactフォークの仮想DOMからの離脱もありえるかと思います。
Reactによる制約から解き放たれ、設計/実装の自由度が格段に上がりました、(Reactに「おまかせ」できていた部分も考えないといけないので)設計/実装の難易度も上がりますが…。
Reactのユーザーベースは、今のところ、大きいので、そのユーザーベースからそっぽを向かれる可能性のある、React→Preactフォーク、Reactとは別の道を往く決断は自信の現れではないかと思います。
Remix開発チームの一番のスポンサーであるShopifyからの賛同は得られているはずです。
推敲中…
Views: 0