跳到主要內容
版本:0.21

部署

當您準備將 Yew 應用程式部署到伺服器時,您有各種部署選項。

trunk build --release 以發行模式建置您的應用程式。設定您的 HTTP 伺服器,以便在每次拜訪您的網站時傳送 index.html,而傳送給像 index_<hash>.jsindex_bg_<hash>.wasm 這樣靜態路徑的請求必須傳送 trunk 所產生的 dist 目錄中各自內容的內容。

關於 trunk serve --release 的說明

請勿使用 trunk serve --release 在生產環境中提供您的應用程式。它僅應在開發過程中,用於測試發行建置

伺服器組態

提供備用 index.html

如果應用程式使用 Yew 導向,則當要求取得一個伺服器不存在的檔案時,你必須設定伺服器回應 index.html

具有 Yew 導向的應用程式是建構為 單頁式應用程式 (SPA)。當使用者從正在執行的客戶端中導向至某個 URL 時,導向會解釋該 URL 並導至那個頁面。

不過在初次載入時 (例如透過在網址列中輸入該頁面的網址或更新頁面) 時,這些動作全是由瀏覽器本身處理,不屬於執行的應用程式中。瀏覽器會直接向伺服器要求該 URL,略過導向。錯誤設定的伺服器會回應 404 狀態碼 - 未找到。

相對地,透過回應 index.html,該應用程式會正常載入,如同該要求是針對 /,直至導向注意到該路由是 /show/42,並顯示合適的內容。

為 Web 組合語言資產設定正確的 MIME 類型

WASM 檔案必須使用 Content-Type 標頭 服務,並設定為 application/wasm MIME 類型。

大多數伺服器和主機服務在預設情況下都已執行此動作。如果你的伺服器沒有執行此動作,請參閱其文件。錯誤的 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! 巨集可用於在編譯時期取得環境變數的值。