このガイドでは、新しい Vue ↗ アプリケーションを作成し、Cloudflare Workers(新しい Workers Assets)にデプロイします。
create-cloudflare ↗ CLI(C3)で新しいプロジェクトを用意します。C3 は新しいプロジェクトディレクトリを作成し、公式の Vue テンプレートのコードを使い、すぐにデプロイする選択肢も提示します。
create-cloudflare で Workers Assets 付きの新しい Vue プロジェクトを作成するには、次のコマンドを実行します。
npm create cloudflare@latest -- my-vue-app --framework=vueyarn create cloudflare my-vue-app --framework=vuepnpm create cloudflare@latest my-vue-app --framework=vueこのプロジェクトの構成は?
以下は、プロジェクトの簡略化したファイルツリーです。
- my-vue-app
- src/
- App.vue
- server/
- index.ts
- index.html
- vite.config.ts
- wrangler.jsonc
- src/
wrangler.jsonc は Wrangler 設定ファイル です。
このファイルでは次のように設定されています。
mainはserver/index.tsを指します。これが Worker で、バックエンド API として動きます。assets.not_found_handlingはsingle-page-applicationです。Vue SPA が処理するルートは Worker に送られないため、課金対象になりません。- Cloudflare の開発者向けプラットフォーム上のリソースへの bindings を追加する場合は、ここで設定します。詳しくは bindings を参照してください。
vite.config.ts は Cloudflare Vite plugin を使うように設定されています。Worker を Cloudflare Workers ランタイムで実行し、ローカル開発環境を本番に近づけます。
server/index.ts はバックエンド API です。テキストを返すエンドポイント /api/ が 1 つあります。
src/App.vue では、Vue アプリがこのエンドポイントを呼び出してメッセージを取得し、表示します。
2. Cloudflare Vite plugin でローカル開発する
プロジェクトを作成したら、プロジェクトディレクトリで次のコマンドを実行し、ローカルサーバーを起動します。開発中にプロジェクトを手元でプレビューできます。
npm run devyarn run devpnpm run devローカル開発では何が起きているか
このプロジェクトは、ローカル開発とビルドに Vite を使うため、ホットモジュールリプレースメント(HMR)を含む Vite の機能をすべて使えます。加えて、vite.config.ts は Cloudflare Vite plugin を使うように設定されています。アプリケーションは本番と同じ Cloudflare Workers ランタイムで動き、bindings のローカルエミュレーションにもアクセスできます。
プロジェクトは、手元のマシンからでも、Cloudflare の CI/CD を含む任意の CI/CD システムからでも、*.workers.dev サブドメインまたは カスタムドメイン にデプロイできます。
次のコマンドでプロジェクトをビルドしてデプロイします。CI を使う場合は、"deploy command" の設定を適切に更新してください。
npm run deployyarn run deploypnpm run deployVue を SPA として使う場合は、Wrangler 設定ファイルで not_found_handling = "single_page_application" を設定します。
デフォルトでは、Cloudflare はまずリクエストパスを静的アセットのパスと照合します。このパスは、アップロードしたアセットディレクトリのファイル構造に基づきます。対象は、Wrangler 設定の assets.directory で指定したディレクトリ、または Cloudflare Vite plugin の場合はクライアントビルドの出力ディレクトリです。一致しない場合は、Worker があれば呼び出します。Worker がない場合、または Worker がアセットバインディングを使う場合、Cloudflare は not_found_handling で設定した動作にフォールバックします。
静的アセットでのルーティングの仕組みと、この動作のカスタマイズについては、ルーティングのドキュメント を参照してください。
新しいプロジェクトには ./server/index.ts に Worker もあります。Vue アプリケーションのバックエンド API として使えます。Vue アプリケーションから Workers の bindings に直接アクセスすることはできませんが、この Worker 経由で利用できます。Vue アプリケーションから Worker へ fetch() リクエスト を送り、Worker 側でリクエストを処理して bindings を使えます。
バインディングを使うと、アプリケーションを Cloudflare Developer Platform と完全に統合でき、コンピュート、ストレージ、AI などへアクセスできます。