</>
⌕
Junior #app-router#pages-router#routing

App Router và Pages Router khác nhau thế nào? Có thể dùng song song không?

⚡ Trả lời nhanh

App Router (thư mục `app/`) dựa trên React Server Components, layout lồng nhau, streaming và Server Actions; Pages Router (`pages/`) dùng `getServerSideProps`/`getStaticProps` và mọi component mặc định là client. Hai router chạy song song được, nhưng một URL không được khai báo ở cả hai.

App RouterPages Router
Thư mụcapp/pages/
Component mặc địnhServer ComponentClient (SSR + hydrate)
Lấy dữ liệuasync component, fetchgetServerSideProps, getStaticProps
Layoutlayout.tsx lồng nhau, giữ state_app.tsx, _document.tsx
APIRoute Handler (route.ts)pages/api/*
Loading/Errorloading.tsx, error.tsx, Suspensetự xử lý
  • Di chuyển dần: có thể thêm app/ bên cạnh pages/, chuyển từng route; nếu trùng đường dẫn, build sẽ báo lỗi.
  • Hook useRouter khác package: next/navigation (App) và next/router (Pages).
  • Pages Router vẫn được hỗ trợ; dự án mới nên dùng App Router.
🃏 Ôn bằng flashcard