隨著 Next.js App Router 的發布,許多開發人員渴望遷移他們現有的專案。在這篇文章中,我將分享我將專案遷移到 Next.js App Router 的經驗,包括主要挑戰、變更以及如何使流程更加順利。
這是一種增量方法,您可以同時使用頁面路由器和應用程式路由器。
App Router 有以下幾個優點:
透過遷移,您可以讓您的應用程式面向未來,以利用最新的 Next.js 功能。
第一步是確保您的 Next.js 和相關依賴項是最新的。執行以下命令來安裝最新版本的 Next.js 和 React:
npm install next@latest react@latest react-dom@latest npm install -D eslint-config-next@latest
App Router 依賴新的應用程式目錄來管理路由、元資料和佈局。以下是如何建造它:
應用程式資料夾:將頁面移到應用程式資料夾中。現在,每條路線都有自己的專用資料夾,其中包含 page.tsx 檔案。
佈局:新增layout.tsx 檔案來定義應用程式特定部分的佈局。這對於處理導覽列或頁腳等共用元件特別有用。
最重要的變化之一是將 next/router 替換為 next/navigation,用於路由和導航功能。
將所有 next/router 匯入替換為 next/navigation。
在適當的情況下使用新的等效項更新 useRouter 等函數,例如 usePathname、useSearchParams 和 useRouter()。
getServerSideProps 和 getStaticProps 在 App Router 中已棄用。
使用非同步伺服器元件或伺服器操作在伺服器端頁面中取得資料。
export async function getData() { const res = await fetch('https://getData.com/data'); return res.json(); }
客戶端元件:
任何使用 React hooks、瀏覽器 API 或使用者互動的元件都必須標記為「使用客戶端」。這告訴 Next.js 在客戶端渲染它們。
伺服器元件:
任何不需要與瀏覽器互動的元件都可以保留為伺服器元件。這些更加高效,因為它們避免了向客戶端發送不必要的 JavaScript。
如果您正在使用 React Query、AntDesign 或 Framer 等外部程式庫。您需要更新它們並根據需要進行更改。無法在此部落格中包含所有變更。儘管他們的文檔中提到了更改。
隨著從 next/router 到 next/navigation 的更改,處理路由器事件可能需要不同的方法。
確保相應地更新任何路由器事件偵聽器或掛鉤。
遷移具有複雜佈局的頁面(尤其是具有動畫的頁面)時,您可能會注意到佈局發生變化。新增佔位符或在伺服器端本身保持正確對齊,以防止佈局變更。
App Router 引入了對圖片和連結組件的變更。
使用codemods自動更新組件。
對於影像組件,刪除已棄用的屬性,例如響應式。
與動畫相關的元件,如框架、滑動器和戰利品檔案需要保存在客戶端。
遷移到 Next.js App Router 帶來了挑戰,但也帶來了效能、可擴展性和靈活性方面的顯著改進。透過將遷移分解為可管理的部分(應用程式層級、頁面層級和功能更新),我能夠系統地處理每個變更。
如果您對自己的遷移有任何問題或建議,請告訴我!
以上是實用指南 - 遷移到 Next.js App Router的詳細內容。更多資訊請關注PHP中文網其他相關文章!