デプロイ
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!
マクロは、コンパイル時に環境変数の値を取得できます。