Rumah  >  Artikel  >  hujung hadapan web  >  Mengapa komponen klien dipaparkan sebagai SSR dalam nextjs, menandakan komponen sebagai \"gunakan klien\" masih menjadikan htmlnya sebagai SSR mengapa?

Mengapa komponen klien dipaparkan sebagai SSR dalam nextjs, menandakan komponen sebagai \"gunakan klien\" masih menjadikan htmlnya sebagai SSR mengapa?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-07 14:22:01964semak imbas

Why do client components render as SSR in nextjs, marking components as

Dalam Next.js, cara komponen pihak klien ("gunakan klien") berfungsi dengan SSR (Pemarahan Sebelah Pelayan) kadangkala boleh mengelirukan. Jom pecahkan:

Cara Komponen Pelanggan dan Pelayan Berfungsi dalam Next.js:

  • Komponen Pelayan: Ini adalah lalai dalam Next.js dan ia pra-dipaparkan pada pelayan. Ia tidak dihantar kepada pelanggan sebagai JavaScript tetapi hanya sebagai HTML.
  • Komponen Pelanggan: Apabila anda menandakan komponen dengan "guna klien", ini bermakna komponen itu perlu dijalankan pada sisi klien kerana ia mungkin mempunyai interaktiviti (seperti useState, useEffect), atau bergantung pada API penyemak imbas yang tidak berfungsi dalam persekitaran pelayan.

Mengapa Komponen Pelanggan Masih Membuat HTML pada Pelayan:

Walaupun komponen ditandakan sebagai "gunakan klien", HTML awal untuk komponen itu masih boleh dijana pada pelayan (SSR), tetapi hanya untuk tujuan HTML statik . Ini bermakna:

  • Render Awal: Pelayan menjana HTML untuk halaman, termasuk komponen klien, untuk prestasi dan SEO yang lebih baik. Ini HTML statik, bukan interaktif.
  • Penghidratan: Apabila HTML ini mencapai penyemak imbas, Next.js menghidratkan komponen sisi klien dengan JavaScript, membolehkan interaktivitinya.

Mengapa Ini Berlaku:

  • Prestasi: Dengan pemaparan pelayan HTML awal, pengguna boleh melihat kandungan dengan lebih pantas (Masa ke Bait Pertama atau TTFB yang lebih pantas) tanpa menunggu JavaScript sisi klien dimuatkan.
  • SEO: Prapemarahan HTML adalah penting untuk SEO kerana ia memastikan enjin carian boleh merangkak dan mengindeks kandungan.
  • Penghidratan: Setelah HTML disampaikan, Next.js menghantar berkas JavaScript kepada klien, yang "menghidratkan" HTML statik, melampirkan pendengar acara dan menjadikannya interaktif.

Apa yang Berlaku dengan "pengguna pelanggan"?

  • Perenderan HTML sisi pelayan: Walaupun komponen adalah sisi klien, Next.js masih menjana HTML untuk paparan awal. Jadi, walaupun ia tidak menjalankan JavaScript interaktif pada pelayan, ia menghantar penanda HTML kepada pelanggan.
  • Penghidratan Bahagian Klien: JavaScript yang diperlukan untuk interaktiviti dihantar kepada klien dan sebaik halaman dimuatkan, Next.js menghidratkan komponen, menjadikannya berfungsi sepenuhnya.

Tanggapan salah:

Menanda komponen dengan "gunakan klien" tidak bermakna ia tidak akan menjana mana-mana bahagian pelayan HTML. Ini bermakna JavaScript interaktif hanya akan dimuatkan pada klien, tetapi pelayan masih boleh menjana HTML statik awal untuk pemaparan.

Untuk meringkaskan:

  • SSR Komponen Pelanggan: HTML untuk komponen klien mungkin pra-dipaparkan pada pelayan (untuk pemuatan awal), tetapi ia tidak interaktif sehingga terhidrat pada klien.
  • "gunakan klien": Arahan ini memastikan JavaScript untuk interaktiviti sisi klien dilaksanakan hanya dalam penyemak imbas, tetapi tidak menghentikan penjanaan HTML statik pada pelayan.

Jika anda ingin memastikan komponen berkelakuan berbeza, anda mungkin perlu memikirkan semula tempat dan cara anda memuatkan kandungan dinamik tertentu, terutamanya jika anda menjangkakan gelagat khusus pelanggan (seperti mengakses tetingkap atau dokumen).

Atas ialah kandungan terperinci Mengapa komponen klien dipaparkan sebagai SSR dalam nextjs, menandakan komponen sebagai \"gunakan klien\" masih menjadikan htmlnya sebagai SSR mengapa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn