Arsitektur Next.js yang didokumentasikan
Next.js dibangun di atas React dan menyediakan lapisan framework untuk perutean, rendering, akses data, endpoint server, kompilasi, dan bundling. Ini menggambarkan model pemrograman publik yang didokumentasikan untuk aplikasi; bukan mengungkap infrastruktur privat yang digunakan untuk mengoperasikan nextjs.org.
Dalam App Router, pohon rute diatur melalui file untuk halaman, layout, status pemuatan, kesalahan, dan perilaku terkait. Layout dan halaman secara default merupakan Server Components. Client Components mendefinisikan subtree yang dijalankan di browser untuk state, event handler, effect, dan API khusus browser.
Lapisan framework publik
| Lapisan | Tanggung jawab yang didokumentasikan |
|---|---|
| Komponen React | Menyusun antarmuka pengguna dan mendefinisikan pohon komponen server atau klien |
| App Router atau Pages Router | Memetakan struktur aplikasi ke rute menggunakan model Next.js yang berbeda |
| Sistem rendering | Menghasilkan output yang di-prerender atau dibuat pada waktu permintaan serta mengoordinasikan streaming jika berlaku |
| Caching dan revalidasi | Mengendalikan penggunaan kembali dan kesegaran sesuai perilaku rute dan data |
| Route Handlers | Mengimplementasikan endpoint HTTP dalam aplikasi App Router |
| Tooling build | Mengompilasi dan mem-bundle kode serta aset aplikasi untuk deployment yang didukung |
Sebuah rute Next.js dapat memuat konten yang dirender server dan interaksi klien yang terfokus. Keberadaan Client Component tidak membuat setiap ancestor menjadi aplikasi yang dirender browser, meskipun batas klien yang dipilih memengaruhi modul mana yang disertakan untuk browser.
Pilihan penyajian
- Ekspor statis menghasilkan file untuk proyek yang tidak membutuhkan fitur server yang tidak didukung.
- Prerendering mempersiapkan output rute sebelum permintaan individual.
- Rendering dinamis menghasilkan output menggunakan informasi pada waktu permintaan.
- Caching dan revalidasi mengelola penggunaan kembali dan kesegaran di antara kedua ekstrem tersebut.
- Runtime yang kompatibel diperlukan untuk perilaku pada waktu permintaan dan perilaku lain yang bergantung pada server.
Panduan deployment resmi mendokumentasikan self-hosting dan adapter platform, sehingga Vercel bukan persyaratan teknis untuk setiap aplikasi Next.js. Cakupan fitur dapat berbeda di antara lingkungan. Tim sebaiknya memverifikasi perutean, caching, perilaku gambar, revalidasi, streaming, dan Route Handlers terhadap target yang dipilih, alih-alih menyimpulkan kompatibilitas dari build yang berhasil.
