Fullstack

SSR vs CSR: Implementasi NextJS dengan Backend NodeJS

  • Penulis : Fitri Hy
  • Tanggal : 2025-02-01

Saat mengembangkan aplikasi web modern, pemilihan antara Server-Side Rendering (SSR) dan Client-Side Rendering (CSR) menjadi hal yang penting. Kedua pendekatan ini memiliki kelebihan dan kekurangan masing-masing dalam hal performa, pengalaman pengguna, dan pengelolaan sumber daya.

Di dalam dunia pengembangan aplikasi web modern, Next.js menjadi salah satu framework yang sangat populer untuk menangani kedua rendering ini, sementara Node.js sering digunakan sebagai backend yang kuat untuk aplikasi tersebut.

Dalam artikel ini, kita akan membahas perbedaan antara SSR dan CSR, serta bagaimana implementasi Next.js dengan backend Node.js dapat meningkatkan performa dan pengalaman pengguna aplikasi web Anda.

Apa Itu Server-Side Rendering (SSR)?

Server-Side Rendering (SSR) adalah teknik di mana HTML dari halaman web dibangkitkan di server dan dikirimkan ke browser. Pada SSR, ketika pengguna mengakses sebuah halaman, server akan memproses dan merender konten terlebih dahulu, kemudian mengirimkan halaman yang sudah jadi ke browser. Ini berarti bahwa konten dapat langsung dilihat oleh pengguna tanpa perlu menunggu JavaScript diunduh dan dijalankan di sisi klien.

Kelebihan SSR:

  1. Waktu Muat Lebih Cepat: Karena halaman sudah dirender di server, pengguna dapat melihat konten lebih cepat.
  2. SEO yang Lebih Baik: Mesin pencari seperti Google dapat dengan mudah mengindeks konten yang telah dirender di server.
  3. Pengalaman Pengguna Lebih Baik: Pengguna akan mendapatkan halaman yang sepenuhnya terbaca dengan lebih cepat tanpa perlu menunggu proses rendering JavaScript.

Kekurangan SSR:

  1. Beban Server Lebih Berat: Setiap permintaan halaman harus diproses oleh server, yang dapat meningkatkan beban server, terutama untuk aplikasi dengan traffic tinggi.
  2. Interaktivitas Terbatas: Setelah halaman dimuat, untuk interaktivitas lebih lanjut, Anda tetap memerlukan JavaScript, yang bisa memperlambat respons setelah muatan awal.

Apa Itu Client-Side Rendering (CSR)?

Client-Side Rendering (CSR) adalah teknik di mana HTML pertama kali dikirim ke browser sebagai halaman kosong, dan JavaScript diunduh untuk membangun tampilan dinamis di sisi klien. Dalam CSR, server hanya mengirimkan data, dan semua rendering halaman dilakukan di browser, yang memungkinkan aplikasi untuk menjadi lebih interaktif setelah halaman dimuat.

Kelebihan CSR:

  1. Interaktivitas yang Lebih Cepat: Setelah halaman dimuat, aplikasi lebih responsif dan interaktif karena sebagian besar logika aplikasi dijalankan di sisi klien.
  2. Beban Server Lebih Ringan: Karena server hanya mengirimkan data dan bukan rendering halaman, beban server dapat dikurangi secara signifikan.
  3. Pengalaman Pengguna yang Lebih Dinamis: Dengan CSR, halaman web dapat memperbarui konten secara dinamis tanpa memuat ulang seluruh halaman.

Kekurangan CSR:

  1. Waktu Muat Lebih Lama: Karena browser harus mengunduh dan mengeksekusi JavaScript sebelum merender halaman, waktu muat halaman bisa lebih lama, terutama untuk pengguna dengan koneksi internet lambat.
  2. SEO yang Kurang Optimal: Mesin pencari mungkin kesulitan mengindeks aplikasi yang sepenuhnya bergantung pada JavaScript untuk merender konten.

SSR vs CSR dalam Next.js

Next.js adalah framework React yang sangat mendukung baik SSR maupun CSR. Dengan menggunakan Next.js, pengembang dapat memilih untuk merender halaman di server (SSR), di sisi klien (CSR), atau bahkan menggunakan kombinasi keduanya untuk aplikasi yang lebih fleksibel.

Implementasi SSR di Next.js dengan Node.js Backend

Next.js membuat implementasi SSR menjadi mudah. Ketika menggunakan SSR, aplikasi Next.js akan meminta data dari backend Node.js dan merender halaman di server. Berikut adalah contoh cara mengimplementasikan SSR dengan Next.js dan backend Node.js:

1. Membuat API di Backend Node.js

// server.js - Node.js backend
const express = require('express');
const app = express();

app.get('/api/data', (req, res) => {
  res.json({ message: 'Data dari backend' });
});

app.listen(3001, () => {
  console.log('Server berjalan di port 3001');
});

Baca juga: Load Balancer: Nginx vs HAProxy untuk High Traffic

2. Menggunakan SSR di Next.js

// pages/index.js - Next.js dengan SSR
import React from 'react';

const Home = ({ data }) => {
  return (
    <div>
      <h1>Data dari Backend: {data.message}</h1>
    </div>
  );
};

export async function getServerSideProps() {
  const res = await fetch('https://i-as.dev:3001/api/data');
  const data = await res.json();

  return {
    props: { data },
  };
}

export default Home;

Dalam contoh di atas, Next.js menggunakan getServerSideProps untuk memanggil API dari backend Node.js dan merender halaman di server sebelum dikirimkan ke browser.

Implementasi CSR di Next.js dengan Node.js Backend

Untuk aplikasi yang lebih interaktif, Anda bisa menggunakan CSR di Next.js, di mana data dimuat setelah halaman dikirim ke browser dan rendering dilakukan di sisi klien. Berikut adalah contoh implementasi CSR:

// pages/index.js - Next.js dengan CSR
import React, { useEffect, useState } from 'react';

const Home = () => {
  const [data, setData] = useState(null);

  useEffect(() => {
    fetch('https://i-as.dev:3001/api/data')
      .then((res) => res.json())
      .then((data) => setData(data));
  }, []);

  return (
    <div>
      <h1>Data dari Backend: {data ? data.message : 'Memuat...'}</h1>
    </div>
  );
};

export default Home;

Pada implementasi CSR ini, halaman dikirimkan sebagai halaman kosong ke browser, dan JavaScript diunduh untuk mengambil data dari API backend Node.js dan menampilkannya.

Keputusan: SSR atau CSR?

Pemilihan antara SSR atau CSR bergantung pada kebutuhan aplikasi Anda:

  • Jika SEO dan waktu muat awal sangat penting, SSR adalah pilihan yang lebih baik karena memberikan halaman yang sudah sepenuhnya dirender di server.
  • Jika aplikasi Anda lebih interaktif dan membutuhkan pengalaman pengguna dinamis, CSR adalah pilihan yang tepat karena rendering dilakukan di sisi klien, mengurangi beban server dan meningkatkan interaktivitas.

Namun, Next.js memungkinkan Anda untuk menggunakan kedua metode ini dalam satu aplikasi. Anda dapat memilih untuk menggunakan SSR untuk halaman-halaman penting yang perlu diindeks oleh mesin pencari, dan CSR untuk aplikasi yang lebih dinamis dan interaktif.

Kesimpulan

Kedua pendekatan, SSR dan CSR, memiliki keunggulan dan kelemahan masing-masing. Next.js menyediakan fleksibilitas untuk memilih teknik rendering yang paling sesuai dengan kebutuhan aplikasi Anda. Dengan menggabungkan Next.js dan backend Node.js, Anda dapat membangun aplikasi web yang scalable, SEO-friendly, dan interaktif, memberikan pengalaman pengguna yang optimal.

Komentar:

Belum ada komentar, jadilah yang pertama.

Tinggalkan Komentar: