本文にスキップ
AI News HubLIVE
サイト内リライト2 分で読了

Show HN: NoDiff —— monorepo 内に住むフレームワーク

記事の要約

NoDiff は、TSX をブラウザの構文として扱う小型 TypeScript フレームワークです。React や仮想 DOM を介さずに実 DOM ノードを生成し、状態バインディング、zod 検証、キャッシュ、認証、ルーティング、フォーム、セキュリティ既定値を備えます。fork-first の monorepo としてアプリと一緒に進化させる設計です。

ソースHacker News AI著者: hbbio
Show HN: NoDiff —— monorepo 内に住むフレームワーク
誤りを報告

訂正窓口はまだ利用できません。記事情報をコピーして保存できます。

訂正案内
本文へ

NoDiff は、リッチクライアントアプリ向けの小さな TypeScript フレームワークです。最大の特徴は、TSX を「ブラウザの構文」として扱うことです。Vite でコンパイルすると、JSX は @nodiffjs/core/jsx-runtime への呼び出しになり、仮想 DOM を構築せずに HTMLElement を直接生成します。props の適用、イベントリスナーの登録、子ノードの追加もこのランタイムが行い、React のような再実行や差分パスは不要です。

リポジトリは fork-first の monorepo 構成で、フレームワーク本体 packages/nodiff(公開名 @nodiffjs/core)とデモアプリ apps/demo が同居しています。デモは Vite と TypeScript のエイリアスを使って packages/nodiff/src を直接参照するため、フレームワークとアプリのコードを同じワークスペースで編集でき、エディタ上での移動や HMR もソースに対して機能します。dist へのビルドはあくまで公開/利用時のチェックとして維持されています。

NoDiff は、ブラウザが元々持つ DOM、イベント、fetch、AbortController、localStorage、history などのプリミティブを活かし、その上に必要な TypeScript の型安全な表面を提供します。TSX の JSX ランタイム、mount/append、ライフサイクル cleanup、text/view/For などの状態バインディング、zustand/vanilla 互換ストア、zod で検証する API クライアント、TTL 付きキャッシュ、トークン認証、ルーター、フォーム、CSRF 補助などが含まれます。

セキュリティも重視されています。DOM テキストは構造的にエスケープされ、innerHTML は特別なラッパーなしでは拒否されます。URL 属性はスキームとオリジンが検査され、_blank には noopener noreferrer が付与されます。configureSecurityPolicy による全体ポリシー、createApi の厳格なリクエスト処理、createAuth のデフォルト永続化なしなどの設計により、安全な使い方が最短ルートになるよう意識されています。エラー表示も既定で redact され、スタックトレースや秘密情報が UI に漏れにくくなっています。

デモアプリは JSONPlaceholder を使い、/posts では zod スキーマを通してデータを検証してから UI 状態に入れます。README には、ストア作成から TSX による実 DOM 描画、text によるテキスト更新、view/For による領域再描画、API クライアントの zod 検証までを順に学ぶチュートリアルもあります。Bun workspaces、Vite 8、TypeScript 7 native preview、oxlint、oxfmt といった現行ツールチェーンも特徴です。

要点と分析を開く

記事インテリジェンス

エンジニア中級

要点

  • JSX は @nodiffjs/core/jsx-runtime への呼び出しに変換され、仮想 DOM や scheduler なしで実際の HTMLElement を作成する。
  • フレームワーク本体とデモアプリを同じ monorepo で編集し、開発時は packages/nodiff/src をエイリアスで参照する fork-first 方式。
  • zustand/vanilla 互換ストア、zod 検証付き API クライアント、TTL 付き localStorage キャッシュ、トークン認証、ルーター、フォームを同梱。
  • DOM テキストのエスケープ、innerHTML 拒否、URL スキーム/オリジン検査、エラー表示のサニタイズなど安全既定値を採用。

要点と分析は自動生成され、誤りを含む場合があります。原典をご確認ください。