メインコンテンツまでスキップ
Version: Next

デプロイ

Yew アプリケーションをサーバーにデプロイする準備ができたら、いくつかのデプロイオプションがあります。

trunk build --release は、リリースモードでアプリケーションをビルドします。HTTP サーバーを設定して、サイトにアクセスしたときに index.html を提供し、静的パス(例:index_<hash>.js および index_bg_<hash>.wasm)のリクエストに対して trunk が生成した dist ディレクトリから適切なコンテンツを提供する必要があります。

trunk serve --release について

trunk serve --release を使用してアプリケーションを提供しないでください。 これは開発中にリリースビルドをテストするためだけに使用されるべきです。

サーバー設定

index.html をフォールバックとして提供する

アプリケーションが Yew ルーター を使用している場合、存在しないファイルへのリクエスト時にサーバーが index.html を返すように設定する必要があります。

Yew ルーターを使用するアプリケーションは シングルページアプリケーション (SPA) として構築されています。ユーザーが実行中のクライアントから URL にナビゲートすると、ルーターが URL を解釈してそのページにルーティングします。

しかし、ページをリフレッシュしたり、アドレスバーに URL を入力したりすると、これらの操作は実行中のアプリケーションではなく、ブラウザー自体によって処理されます。ブラウザーはその URL を直接サーバーにリクエストし、ルーターをバイパスします。誤って設定されたサーバーは 404 - 見つかりません 状態を返します。

index.html を返すことで、アプリケーションは通常通りにロードされ、ルーターがルート /show/42 を認識して適切なコンテンツを表示するまで、リクエストが / であるかのように動作します。

Web Assembly リソースに正しい MIME タイプを設定する

WASM ファイルは application/wasm MIME タイプで Content-Type ヘッダー を設定する必要があります。

ほとんどのサーバーとホスティングサービスはデフォルトでこれを行います。サーバーがこれを行わない場合は、そのドキュメントを参照してください。ほとんどの Web ブラウザーでは、誤った MIME タイプは次のようなエラーを引き起こします:

`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:
TypeError: WebAssembly: Response has unsupported MIME type 'text/plain' expected 'application/wasm'

相対パスのビルド

デフォルトでは、trunk はサイトが / で提供されると仮定し、それに応じてサイトをビルドします。この動作は、index.html ファイルに <base data-trunk-public-url /> を追加することで上書きできます。Trunk はこのタグを書き換えて、--public-url に渡された値を含めます。Yew ルーターは <base /> の存在を自動的に検出し、適切に処理します。

環境変数を使用して動作をカスタマイズする

通常、環境変数を使用してビルド環境をカスタマイズします。アプリケーションがブラウザで実行されるため、実行時に環境変数を読み取ることはできません。 std::env! マクロは、コンパイル時に環境変数の値を取得できます。