Skip to content

04. Laravel sebagai Fullstack Framework ​

Pada materi sebelumnya, kita telah melihat perbandingan nyata antara penulisan kode PHP Native dan framework Laravel. Sekarang, kita akan membahas salah satu kemampuan paling mendasar dari Laravel yang menjadikannya pilihan populer di dunia industri: kemampuannya sebagai Fullstack Framework.


A. Pengantar ​

Di kalangan komunitas pemrograman, Laravel sering kali diasosiasikan sebagai alat pembuat backend atau penyedia data API (Application Programming Interface). Namun, fungsi Laravel sebenarnya jauh lebih luas dari itu.

Laravel dirancang sejak awal sebagai framework fullstack yang lengkap. Artinya, dalam satu project Laravel yang sama, Anda dapat mengelola seluruh logika bisnis aplikasi di sisi server (backend) sekaligus menghasilkan tampilan antarmuka web dinamis (frontend) yang dikirimkan langsung ke browser menggunakan template engine bawaan bernama Blade.

Materi ini akan membahas perbedaan pendekatan antara membangun Laravel sebagai backend API terpisah dan membangun aplikasi menggunakan arsitektur Laravel Fullstack berbasis Blade, serta alasan mengapa pendekatan fullstack dipilih untuk project aplikasi perpustakaan kita.


B. Apa Itu Fullstack Development? ​

Dalam rekayasa perangkat lunak web, aplikasi umumnya terbagi menjadi dua ranah utama:

1. Frontend (Sisi Klien) ​

Frontend adalah bagian aplikasi yang berinteraksi langsung dengan mata dan tindakan pengguna di layar browser:

  • Menampilkan halaman antarmuka, tata letak, warna, dan tipografi.
  • Menyediakan formulir input untuk menerima interaksi pengguna (misalnya tombol klik dan input teks pencarian buku).
  • Dibangun menggunakan teknologi dasar web: HTML (struktur), CSS (tata rias dan gaya), dan JavaScript (interaktivitas klien).

2. Backend (Sisi Server) ​

Backend adalah bagian aplikasi yang bekerja di balik layar pada server web:

  • Menerima dan memproses permintaan HTTP yang dikirimkan oleh browser.
  • Menjalankan logika bisnis (misalnya menghitung durasi peminjaman buku dan menghitung denda keterlambatan).
  • Berkomunikasi dengan sistem basis data MySQL untuk membaca atau menyimpan data.
  • Menangani proses autentikasi (pemeriksaan password) dan membatasi hak akses pengguna.

Pengembangan aplikasi secara fullstack berarti seorang pengembang menangani kedua ranah tersebut agar terintegrasi menjadi satu kesatuan sistem aplikasi web yang utuh.


C. Laravel sebagai Backend API ​

Salah satu cara menggunakan Laravel adalah menjadikannya murni sebagai penyedia layanan backend (Backend API).

Dalam pendekatan ini:

  • Laravel bertugas mengelola basis data, logika bisnis, dan keamanan data.
  • Laravel tidak menghasilkan tampilan HTML atau berkas CSS.
  • Setiap rute (endpoint) Laravel mengembalikan data mentah dalam format standar pertukaran data web, yaitu JSON (JavaScript Object Notation).
  • Tampilan antarmuka (frontend) dibuat di dalam project terpisah menggunakan framework JavaScript modern seperti React, Vue, atau Svelte, ataupun aplikasi mobile (Android/iOS).

Diagram Alur Arsitektur API ​

Penjelasan Alur API: ​

  1. Browser atau aplikasi mobile mengirimkan permintaan data (misalnya GET /api/books).
  2. Controller di Laravel memproses permintaan, mengambil koleksi buku dari basis data, lalu mengubah data tersebut menjadi teks JSON.
  3. Contoh respons data JSON yang dikirimkan ke browser:
json
{
  "status": "success",
  "data": [
    {
      "id": 1,
      "judul": "Pemrograman Web dengan PHP Modern",
      "penulis": "Ahmad Fauzi",
      "tersedia": true
    },
    {
      "id": 2,
      "judul": "Dasar Perancangan Basis Data Relasional",
      "penulis": "Budi Santoso",
      "tersedia": false
    }
  ]
}
  1. Kode JavaScript di sisi klien (React/Vue) menerima data JSON tersebut, lalu mengolahnya untuk ditampilkan ke dalam elemen HTML secara dinamis.

Pendekatan ini sangat bermanfaat jika aplikasi perpustakaan Anda nantinya harus melayani banyak platform sekaligus (misalnya web publik, aplikasi kasir desktop, dan aplikasi mobile siswa). Namun, pendekatan ini menuntut pengelolaan dua project terpisah dan pemahaman mendalam tentang penanganan state di JavaScript.


D. Laravel sebagai Fullstack Framework dengan Blade ​

Pendekatan kedua adalah menggunakan Laravel sebagai sistem fullstack terpadu. Ini adalah pendekatan tradisional yang sangat matang dan efisien, di mana Laravel dan template engine Blade bekerja bersama di dalam satu project yang sama.

Dalam pendekatan fullstack ini:

  • Laravel menangani perutean (routing), middleware keamanan, controller, dan interaksi basis data.
  • Ketika controller selesai mengambil data dari database, data tersebut langsung diteruskan ke berkas template Blade (.blade.php).
  • Blade menggabungkan data tersebut dengan kerangka HTML di sisi server (Server-Side Rendering).
  • Hasil akhir yang dikirimkan ke browser pengguna sudah berupa dokumen HTML utuh yang siap ditampilkan secara visual.

Diagram Alur Arsitektur Laravel Fullstack dengan Blade ​

Penjelasan Tahap demi Tahap: ​

  1. Pengguna membuka URL di browser (misalnya http://localhost:8000/buku).
  2. Routing mengenali rute URL tersebut dan meneruskannya melalui lapisan Middleware (misalnya untuk memeriksa status sesi).
  3. Controller menjalankan method yang dituju dan meminta data buku ke Model.
  4. Model membaca tabel pada database MySQL dan mengembalikan data ke Controller.
  5. Controller mengirimkan data buku ke berkas tampilan Blade View.
  6. Blade merender data ke dalam elemen HTML di dalam server. Browser pengguna tidak perlu menjalankan proses kompilasi apa pun karena dokumen HTML yang diterima sudah selesai dibuat.

E. Perbandingan Arsitektur: Laravel API vs Laravel Fullstack ​

Untuk memperjelas perbedaan di antara kedua pendekatan, mari kita tinjau tabel perbandingan berikut:

Aspek PerbandinganLaravel sebagai Backend APILaravel Fullstack dengan Blade
Struktur ProjectTerpisah menjadi 2 project (API Laravel + Frontend SPA)Satu project tunggal yang mengelola backend dan tampilan
Pengelolaan TampilanDikelola oleh framework JS (React / Vue) di sisi klienDikelola oleh Blade template engine di sisi server
Format Komunikasi DataData mentah dalam format JSONDokumen HTML terstruktur yang sudah selesai dirender
Waktu RenderingClient-Side Rendering (browser memproses data JS)Server-Side Rendering (server menghasilkan HTML langsung)
Pengelolaan RoutingRouting ganda: Route API di Laravel dan Route URL di React/VueTerpusat di satu berkas: routes/web.php
Sistem AutentikasiBerbasis token API (seperti Laravel Sanctum)Berbasis cookie dan sesi bawaan (session-based auth)
Kebutuhan ToolchainMembutuhkan setup build frontend kompleks (Node, NPM, bundler SPA)Sederhana, terintegrasi langsung dalam instalasi Laravel
Tingkat KompleksitasLebih tinggi, cocok untuk tim dengan spesialisasi frontend terpisahLebih ramping dan cepat untuk dipelajari oleh pemula

Kedua pendekatan di atas sama-sama valid dan digunakan secara luas di industri. Pemilihan arsitektur harus didasarkan pada skala kebutuhan sistem, bukan tren semata.


F. Bagaimana Laravel dan Blade Bekerja Bersama? ​

Mari kita bedah skenario nyata saat seseorang membuka katalog buku perpustakaan pada alamat /buku:

  1. Permintaan Diterima: Pengguna mengetik alamat /buku di browser.
  2. Pencocokan Rute: Berkas routes/web.php mencocokkan URL tersebut dan memanggil BookController@index.
  3. Pengambilan Data: BookController menggunakan Model Eloquent untuk mengambil daftar koleksi buku: $books = Book::all();.
  4. Pengiriman ke View: Controller memanggil fungsi view('books.index', compact('books')).
  5. Kompilasi di Server: Mesin Blade membaca berkas resources/views/books/index.blade.php. Setiap directive perulangan @foreach dan variabel data {{ $book->judul }} digantikan dengan teks HTML biasa dan nilai judul buku yang sebenarnya.
  6. Pengiriman ke Klien: Server web mengirimkan dokumen HTML tersebut ke browser. Pengguna langsung melihat tabel katalog buku seketika.

Seluruh proses pertukaran data dari database hingga antarmuka HTML terjadi di dalam satu lingkungan aplikasi Laravel tanpa perlu konfigurasi jaringan API antar server yang rumit.


G. Contoh Implementasi Sederhana ​

Untuk melihat bagaimana Laravel mengirim data ke template Blade secara langsung, perhatikan contoh minimal berikut.

1. Mendefinisikan Rute di routes/web.php ​

php
<?php
use Illuminate\Support\Facades\Route;

Route::get('/contoh', function () {
    $nama = 'Sinau Uki';

    return view('contoh', compact('nama'));
});

2. Membuat Berkas View di resources/views/contoh.blade.php ​

html
<!DOCTYPE html>
<html lang="id">
<head>
    <meta charset="UTF-8">
    <title>Contoh Laravel Fullstack</title>
</head>
<body>
    <h1>Selamat datang di {{ $nama }}</h1>
</body>
</html>

Penjelasan Bagian Penting: ​

  1. Fungsi Route::get('/contoh', ...): Mendaftarkan rute web baru yang dapat dibuka di browser pada URL http://localhost:8000/contoh.
  2. Variabel $nama = 'Sinau Uki': Merepresentasikan data yang dipersiapkan di sisi server.
  3. Fungsi view('contoh', ...): Menginstruksikan Laravel untuk mencari dan merender berkas tampilan bernama contoh.blade.php yang berlokasi di dalam folder resources/views/.
  4. Fungsi compact('nama'): Fungsi bawaan PHP yang mengubah variabel $nama menjadi pasangan array asosiatif ['nama' => 'Sinau Uki'] agar nilainya dapat dikenali di dalam berkas Blade.
  5. Ekspresi Blade <code v-pre></code>: Saat berkas Blade diproses di server, sintaks ini otomatis digantikan dengan nilai string 'Sinau Uki' sekaligus diamankan dari potensi celah keamanan XSS.

Hasil akhir yang diterima browser hanyalah elemen HTML murni: <h1>Selamat datang di Sinau Uki</h1>.


H. Kelebihan dan Keterbatasan Laravel Fullstack dengan Blade ​

Memahami kelebihan dan batasan arsitektur fullstack membantu kita mengambil keputusan teknis yang tepat:

Kelebihan Pendekatan Fullstack Blade: ​

  • Pengembangan Jauh Lebih Cepat: Pengembang tidak perlu merancang kontrak API JSON bolak-balik antara frontend dan backend.
  • Struktur Kode Terpadu: Semua berkas controller, model, migration, dan template antarmuka berada di satu repositori project yang sama.
  • Pemanfaatan Fitur Bawaan Maksimal: Memanfaatkan sistem validasi otomatis, session flash message, middleware route, dan proteksi CSRF tanpa konfigurasi tambahan.
  • SEO Friendly Secara Alami: Karena HTML dirender langsung di server, mesin pencari dapat mengindeks konten halaman web dengan sangat mudah.

Keterbatasan: ​

  • Pengalaman Halaman Tunggal (SPA) Tidak Otomatis: Secara default, perpindahan halaman akan memuat ulang (page reload) halaman browser, berbeda dengan aplikasi SPA murni.
  • Ketergantungan Interaktivitas Kompleks: Jika aplikasi perpustakaan membutuhkan interaktivitas antarmuka yang sangat padat (misalnya pemindai barcode real-time atau drag-and-drop rak buku), Anda tetap perlu menambahkan skrip JavaScript modern di sisi klien.

Catatan

Aplikasi berbasis Blade sama sekali bukan teknologi kuno. Di industri web profesional, Blade sering dipadukan dengan pustaka JavaScript ringan (seperti Alpine.js) atau teknologi reaktif modern (seperti Laravel Livewire) untuk menghasilkan aplikasi web yang sangat interaktif tanpa kehilangan kenyamanan fullstack.


I. Pendekatan yang Digunakan dalam Project Perpustakaan ​

Untuk kebutuhan belajar mandiri dan persiapan sertifikasi UKI Junior Web Programming, keputusan arsitektur yang kita gunakan adalah:

Laravel 13 Fullstack dengan Blade

  • Framework Utama: Laravel 13.x (PHP 8.3+)
  • Template Engine: Laravel Blade
  • Struktur Antarmuka: Dokumen HTML semantik
  • Styling: CSS rapi dan terstruktur
  • Interaktivitas Tambahan: JavaScript murni seperlunya
  • Penyimpanan Data: Basis data relasional MySQL via XAMPP

Alasan Pemilihan Arsitektur Ini: ​

  1. Fokus pada Alur Logika Pemrograman: Pemula dapat fokus memahami konsep basis data, controller, dan alur aplikasi web tanpa terpecah konsentrasinya oleh kerumitan konfigurasi state framework JavaScript pihak ketiga.
  2. Sesuai Standar Kompetensi: Kebutuhan pengujian UKI Junior Web Programming menitikberatkan pada pemahaman arsitektur MVC, manipulasi basis data, validasi formulir, dan autentikasi sesi, di mana seluruh aspek ini dapat dipelajari secara optimal melalui Laravel Fullstack.
  3. Efisiensi Lingkungan Kerja: Cukup menggunakan satu web server lokal (XAMPP dan PHP Artisan) untuk menjalankan seluruh sistem aplikasi dari ujung ke ujung.

J. Kesimpulan ​

Laravel adalah framework serbaguna yang dapat digunakan dalam dua pendekatan arsitektur utama:

  1. Sebagai Backend API: Menyediakan data mentah berformat JSON untuk dikonsumsi oleh aplikasi frontend terpisah (React, Vue, atau Mobile).
  2. Sebagai Fullstack Framework: Menangani logika server sekaligus merender tampilan visual antarmuka web secara langsung menggunakan template engine Blade.

Kedua pendekatan merupakan solusi yang sah di dunia industri. Untuk aplikasi Sistem Informasi Perpustakaan kita, pendekatan Laravel Fullstack dengan Blade adalah pilihan paling tepat, efisien, dan terarah untuk membangun fondasi rekayasa web yang kokoh.


K. Materi Selanjutnya ​

Sekarang Anda telah memahami bagaimana Laravel mengelola logika server dan tampilan antarmuka dalam satu kesatuan arsitektur fullstack.

Pada materi berikutnya, kita akan membedah lebih mendalam mesin pembuat tampilan antarmuka bawaan Laravel: 👉 05. Mengenal Blade Template Engine: Mempelajari konsep dasar template inheritance, master layout, komponen tampilan, dan bagaimana Blade membuat penulisan HTML menjadi jauh lebih modular dan terstruktur.


Referensi Dokumentasi ​