HN 日本語サマリー

← 一覧へ戻る
Web開発

Show HN: Mador – わずか80行のProxy状態タプルで任意のDOMをリアクティブにする

Show HN: Mador – Make any DOM reactive with a tiny 80-line Proxy state tuple (github.com)

43 pointsby bosmarcel16 コメント

要約

Madorは、フレームワークを必要としないユーザー向けに設計された、非常に軽量なリアクティブDOMランタイムです。既存のDOMにリアクティブな状態をバインドする機能を提供し、わずか80行程度のコードで実装されています。npmまたはCDN経由で利用でき、ビルドステップや仮想DOMは不要です。

全文翻訳

mador.js DOMをリアクティブにする。それだけ。 Mador: は、フレームワークを必要としない、または望まない人のための非常に小さなリアクティブDOMランタイムです。 これはリアクティブな状態と、その状態を既存のDOMにバインドする方法を提供します。 MadorはネイティブESモジュールであり、npmから、またはCDNから直接使用できます。 import mador from "https://cdn.jsdelivr.net/npm/@marsbos/mador@latest/dist/mador.js"; const [r, w] = mador({ count: 1, }); r( ".counter", (el, count) => { el.textContent = `Count: ${count}`; }, (state) => state.count, ); r( ".another-counter", (el, count) => { el.textContent = count * 3; }, (state) => state.count, ); w((state) => { state.count++; }); そして、それがほぼすべてです。 コンポーネント、テンプレート、仮想DOMはありません。 Madorは既存のDOMで動作します。 リアクティブバインディング バインディングは3つの要素で構成されます: r(selector, update, read); selectorは更新する要素を選択します。 updateは各要素とreadが返す値を受け取ります。 readはバインディングが依存する状態を選択します。 r( ".counter", (el, count) => { el.textContent = count * 2; }, (state) => state.count, ); Madorはバインディングによって読み取られたプロパティを追跡し、それらの依存関係が変更された場合にのみ再実行します。 状態 状態はwを通じて変更されます: w((state) => { state.count++; }); 書き込みはバッチ処理されるため、同じ書き込みで行われた複数の変更はまとめて処理されます。 DOMライフタイム 'バインディング'は、更新するDOMに関連付けられます。 一致する要素がなくなると、Madorは対応するリアクティブランナーを削除できます。 管理すべきコンポーネントライフタイムはありません。 なぜmador.jsなのか? ページがフレームワークを必要としない場合があります。 すでにHTMLとJavaScriptがありますが、少しのリアクティビティが必要です。 Madorはそのために作られています。 サイズ Madorは意図的に小さく作られています。 ランタイムは現在、最小化されて約855バイトです。 使用方法 MadorはESモジュールとして配布されています。 import mador from "mador"; グローバルランタイムやビルドステップは必要ありません。 ライセンス MIT