deno-frontend について
既存または新規プロジェクトでフロントエンドを開発する人向けの Deno スキルです。一般的な npm フレームワークと Fresh を扱い、それぞれに沿った手順を示します。
主な機能
- 01Deno で npm フロントエンドフレームワークを利用
- 02Deno コマンドによるプロジェクト作成と実行
- 03アイランドアーキテクチャで Fresh アプリを構築
- 04Fresh のルートとコンポーネントの案内
- 05Fresh のバージョン移行情報
活用シーン
- 01Deno でフロントエンドプロジェクトを開始
- 02Deno で React または Svelte プロジェクトを実行
- 03Fresh でサーバーサイドレンダリングページを構築
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ denoland/ skills --skill deno-frontendインストール後、Claude Code で/deno-frontendを入力して読み込まれたか確認します。
同梱ファイルreferences/FRESH_MIGRATION.mdreferences/FRESH.md
詳細
Deno でのフロントエンド開発
方法は 2 つあります。プロジェクトですでに使われているものに合わせて選んでください。
一般的な npm フレームワーク — 通常はこちらを選びます
Deno では、React、Vue、Svelte、Solid、Vite、Astro、Next.js、Nuxt、SvelteKit、Remix、SolidStart といった通常のフロントエンドエコシステムを利用できます。移植は不要で、Deno 固有の書き方もありません。
deno create vite my-app # or astro, next, nuxt, svelte…
cd my-app
deno install
deno task dev
deno create は npm create に相当します。deno install は package.json を読み込みます。deno task <script> は package.json のスクリプトを実行します。違いはそれだけです。
それ以外はすべて、各フレームワークの公式ドキュメントに従ってください — ルーティング、コンポーネント、データ読み込み、設定はフレームワークの領分であり、Deno の領分ではありません。Deno 風の API バリエーションを独自に作らないでください。また、React や Svelte のプロジェクトで Fresh のパターンを使わないでください。
知っておくとよいことは次のとおりです。
"nodeModulesDir": "auto"をdeno.jsonに設定する必要があるフレームワークもあります。Next.js では必要です。- 開発サーバーにも権限が適用されるため、フレームワークのタスクでは通常
-Aが必要です。 - デプロイについては、フレームワークごとのビルドコマンドとプリセットをまとめた
deno-deployスキルを参照してください。
Fresh — Deno 独自のフレームワーク
Fresh は、サーバーサイドレンダリングを行い、クライアント側の JavaScript を最小限に抑えたい、新しい Deno ファーストのプロジェクトに適しています。アイランドアーキテクチャを採用しており、ページはサーバーでレンダリングされ、JavaScript が配信されるのは islands/ 内のコンポーネントだけです。
deno run -Ar jsr:@fresh/init
cd my-project
deno task dev # http://localhost:5173
Fresh のプロジェクトは Vite ベースです。ビルドには vite.config.ts、サーバーには main.ts、ファイルベースのルートには routes/、アイランドには islands/、サーバー専用コンポーネントには components/ を使います。コンポーネントモデルは Preact が提供し、状態管理にはシグナルを使います。
// islands/Counter.tsx — interactive, ships JS
import { useSignal } from "@preact/signals";
export default function Counter() {
const count = useSignal(0);
return <button onClick={() => count.value++}>Count: {count.value}</button>;
}
重要なルールは 3 つです。
- アイランドは JavaScript を配信するため、小さく保ち、それ以外はすべて
components/に置いてください。 - アイランドのプロパティはシリアライズ可能でなければなりません。関数は渡せません。
- ハンドラーは単一の
(ctx)パラメーターを受け取ります。
ルート、ハンドラー、define ヘルパー、ミドルウェア、アイランド、シグナル、Tailwind については、references/FRESH.md を読み込んでください。
"fresh" からインポートする Fresh 2.x を使ってください。既存の 1.x プロジェクト、または 2.0.0-alpha.* リリースに固定されたプロジェクトについては、references/FRESH_MIGRATION.md を参照してください。
さらに詳しく
- https://fresh.deno.dev/docs — Fresh のドキュメント
references/FRESH.md— Fresh 2.x のパターンを詳しく解説references/FRESH_MIGRATION.md— Fresh 1.x およびアルファ版からの移行