運作方式

使用 Inertia,您可以像往常一樣使用您選擇的伺服器端 Web 框架來建構應用程式。您可以使用框架現有的路由、控制器、中介層、身份驗證、授權、資料擷取等功能。

但是,Inertia 會取代您應用程式的視圖層。您的應用程式回傳的視圖不是透過 PHP 或 Ruby 模板進行伺服器端渲染,而是 JavaScript 頁面組件。這讓您可以使用 React、Vue 或 Svelte 建構整個前端,同時仍然可以享受 Laravel 或您偏好的伺服器端框架的生產力。

正如您可能預期的那樣,僅僅在 JavaScript 中建立前端並不能為您帶來單頁應用程式的體驗。如果您點擊連結,您的瀏覽器將會進行完整的頁面訪問,這會導致您的客戶端框架在後續頁面載入時重新啟動。這就是 Inertia 改變一切的地方。

Inertia 的核心基本上是一個客戶端路由庫。它允許您進行頁面訪問,而無需強制進行完整的頁面重新載入。這是透過使用 <Link> 組件完成的,它是普通錨點連結的輕量級包裝。當您點擊 Inertia 連結時,Inertia 會攔截點擊並改為透過 XHR 進行訪問。您甚至可以使用 router.visit() 在 JavaScript 中以程式方式進行這些訪問。

當 Inertia 進行 XHR 訪問時,伺服器會偵測到這是 Inertia 訪問,並且不會回傳完整的 HTML 回應,而是回傳一個 JSON 回應,其中包含 JavaScript 頁面組件名稱和資料(屬性)。然後,Inertia 會使用新的頁面組件動態替換先前的頁面組件,並更新瀏覽器的歷史記錄狀態。

最終結果是流暢的單頁體驗。🎉

若要進一步了解 Inertia 在底層運作方式的詳細技術資訊,請查看 協定頁面.