Single Page Application | SPA adalah arsitektur web modern di mana halaman tidak melakukan reload penuh setiap kali berpindah halaman.
Sebaliknya, hanya bagian tertentu (view) yang berganti secara dinamis.
Pada aplikasi tradisional, saat user klik menu:
- Browser meminta halaman baru (HTML baru)
- Server merespon HTML
- Browser menampilkan halaman baru
Dalam SPA:
- Browser hanya memuat file index.html satu kali
- Pergantian layar dilakukan via JavaScript
- Data didapat melalui API (JSON)
Contents
- 1 Alur SPA
- 2 Kelebihan SPA
- 3 Arsitektur SPA + REST API
- 4 Struktur Folder SPA
- 5 Router SPA + Jquery
- 6 AJAX Komunikasi Backend API Node Js
- 7 Node.js REST API (Express)
- 8 Struktur Folder Backend
- 9 Database MySQL
- 10 Koneksi Database (db.js)
- 11 API Register (Auth)
- 12 API Login
- 13 Mulai Server
- 14 Keamanan SPA
- 15 Kelebihan Real SPA dibanding Website Tradisional
- 16 Performance Optimization
- 17 Real Use Case Dunia Nyata
- 18 18. Error & Debugging
- 19 Pengembangan Lebih Lanjut
- 20 Kesimpulan
- 21 Hasil SreenShot
Alur SPA
- HTML layout utama berisi container
<div id="view"></div> - Saat pengguna navigasi (URL hash berubah)
- Router SPA mengambil konten file HTML parsial
- Ditampilkan di
<div id="view"> - Tanpa reload page penuh
Kelebihan SPA
- Navigasi super cepat
- UX seperti aplikasi desktop/mobile
- Bandwidth kecil (tidak muat seluruh halaman)
- Cocok untuk dashboard, POS, ERP, e-commerce admin, CMS, APP Web custome, dll.
Kekurangan SPA:
Lebih kompleks dibanding website biasa, Perlu routing manual, SEO sulit (karena konten tidak di-render server-side) namun jika di develop secara benar masalah2 bisa hilang optimasi SEO pun OK!
Arsitektur SPA + REST API

SPA hanya bertugas meng-handle UI.
REST API menangani data & logic.
Data Flow SPA
Struktur Folder SPA
Folder projects frontend dengan struktur engine template routers js sederhana tp dengan konsep full SPA { single page appllications }.
SPA melihat folder views sebagai “template mini”.
Router SPA + Jquery
Router memonitor perubahan URL hash dan memuat konten.
index.html
Routing script
Keuntungan Router ini:
- Tanpa reload
- Kode sangat singkat
- Cocok untuk dashboard SPA
AJAX Komunikasi Backend API Node Js
Contoh login SPA:
Node.js REST API (Express)
Install dependencies
Struktur Folder Backend
Database MySQL
Koneksi Database (db.js)
Penggunaan sistem pool supaya bisa maksimal nampung koneksi simultan dan traffic tinggi:
const mysql = require("mysql2");
const db = mysql.createPool({
host: "localhost",
user: "root",
password: "",
database: "spa_db",
waitForConnections: true,
connectionLimit: 500, // maksimal koneksi
queueLimit: 1000 // unlimited queue
});
db.getConnection((err, conn)=>{
if(err){
console.log("DB Pool Error:", err);
} else {
console.log("DB Pool Connected");
conn.release(); // lepaskan kembali ke pool
}
});
module.exports = db;
API Register (Auth)
routes/auth.js:
API Login
Mulai Server
Keamanan SPA
SPA harus:
- Menyimpan token/user dalam
localStorage - Menghindari memuat view rahasia sebelum login
- Validasi login saat hash router berubah
Kelebihan Real SPA dibanding Website Tradisional

| Fitur | Traditional | SPA |
|---|---|---|
| Reload page | Selalu | Tidak |
| Kecepatan | Lambat | Sangat cepat |
| UX | Seperti web | Seperti aplikasi |
| Data load | Full HTML | JSON saja |
| Server load | Tinggi | Ringan |
Performance Optimization
SPA menghindari:
- Reload CSS/JS
- Reload gambar
- Reload layout
Sehingga bandwidth hemat hingga 80%.
Real Use Case Dunia Nyata
- Dashboard Admin
- E-Commerce Management
- Sistem Kasir (POS)
- Monitoring IoT
- Inventory / Warehousing
- Sistem Pajak / Payroll
SPA cocok ketika:
- User banyak berinteraksi
- Halaman sering berpindah tanpa reload
18. Error & Debugging
Debug karena async, Gunakan callback dalam load:
Pengembangan Lebih Lanjut
Jika ingin lebih profesional:
- JWT Authentication
- BCrypt password hashing
- Middleware
- Upload file (Multer)
- Multi-role (Admin/User)
- Pagination
- Export Excel
Kesimpulan
SPA + Node.js API adalah arsitektur modern yang:
- Cepat
- Ringan
- Scalable
- Mudah maintenance
SPA mengendalikan UI. Node.js API mengendalikan data.
Keduanya decoupled, sehingga bisa dikembangkan terpisah:
- API dapat dipakai Mobile App / Flutter
- SPA dapat di-host CDN (Cloudflare, Firebase)
Hasil SreenShot
Foto frontend:
