部署
當您準備將 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!
巨集可以在編譯時取得環境變數的值。