Vue 3 Composition API: Pola yang Benar untuk Project Nyata
Pendahuluan
Sejak rilis Vue 3, Composition API menjadi pendekatan utama dalam membangun aplikasi Vue modern.
Sayangnya, banyak developer masih salah kaprah: semua logic ditaruh di setup() tanpa struktur yang jelas.
Akibatnya:
-
file cepat berantakan
-
susah dibaca
-
sulit di-maintain
-
makin besar project, makin ribet
Di artikel ini, saya akan membahas pola Composition API yang benar untuk project nyata, berdasarkan praktik yang umum dipakai di aplikasi production, bukan sekadar contoh dokumentasi.
Cocok untuk:
-
developer Vue 3
-
project skala menengah–besar
-
aplikasi bisnis / dashboard / SaaS
Apa Itu Composition API (Singkat & Jelas)
Vue.js Composition API adalah cara menulis logic Vue berdasarkan fungsi dan reusability, bukan lagi dipisah berdasarkan data, methods, dan computed seperti Options API.
Tujuan utamanya:
-
logic lebih reusable
-
kode lebih terstruktur
-
mudah diuji dan dikembangkan
❌ Kesalahan Umum di Project Nyata
Sebelum masuk ke pola yang benar, ini kesalahan yang sering saya temui:
Masalah:
-
semua logic numpuk
-
tidak reusable
-
sulit dibaca
-
satu file bisa 500+ baris
Untuk demo oke.
Untuk production? ❌
✅ Prinsip Pola Composition API yang Benar
Sebelum ke kode, pegang dulu prinsip ini:
1️⃣ Pisahkan logic dari UI
2️⃣ Gunakan composable (useSomething)
3️⃣ Satu composable = satu tanggung jawab
4️⃣ Component fokus ke tampilan
📁 Struktur Folder yang Direkomendasikan
Struktur ini sudah terbukti rapi di project nyata:
```js src/ ├─ components/ ├─ pages/ ├─ composables/ │ ├─ useUser.js │ ├─ useAuth.js │ └─ useFetch.js ├─ services/ │ └─ api.js └─ stores/ └─ userStore.js ```
🧠 Contoh Kasus Nyata: Fetch Data User
❌ Cara Salah (logic di component)
Kelihatannya oke, tapi:
-
tidak reusable
-
susah dites
-
logic bercampur UI
✅ Cara Benar: Pakai Composable
1️⃣ Buat composable useUser.js
2️⃣ Gunakan di component
Hasilnya:
✅ component bersih
✅ logic reusable
✅ mudah dipelihara
🔁 Reusable Logic = Kunci Project Besar
Composable bisa dipakai di banyak component:
Kalau besok:
-
ganti API
-
tambah auth
-
tambah cache
➡️ ubah di satu tempat saja.
🧩 Pola Naming yang Disarankan
Gunakan konvensi:
```js
Kenapa?
-
mudah dikenali
-
konsisten
-
readable untuk tim
🏪 Kapan Pakai Pinia?
Kalau data:
-
dipakai banyak halaman
-
bersifat global
-
terkait state aplikasi
Gunakan Pinia, bukan composable biasa.
Contoh:
-
user login
-
role & permission
-
theme
-
cart
Composable 👉 logic
Pinia 👉 state global
⚠️ Anti Pattern yang Harus Dihindari
❌ satu composable isinya semua hal
❌ composable berisi UI logic
❌ terlalu banyak watch()
❌ tidak handle error
❌ tidak pisah API service
🔍 Tips Production yang Sering Terlewat
-
pisahkan API call ke
services/ -
selalu handle error
-
jangan fetch di banyak tempat
-
buat composable kecil & fokus
-
dokumentasikan composable penting
🎯 Kesimpulan
Composition API bukan soal sintaks baru, tapi soal cara berpikir yang benar.
Untuk project nyata:
-
component = UI
-
composable = logic
-
store = state global
Dengan pola ini:
✅ kode rapi
✅ scalable
✅ mudah dikerjakan tim
✅ siap production
Kalau kamu masih menaruh semua logic di setup(), sekarang waktu yang tepat untuk refactor.
❓ FAQ
Q: Apakah Composition API wajib?
Tidak wajib, tapi sangat disarankan untuk project besar.
Q: Bisa dicampur dengan Options API?
Bisa, tapi sebaiknya konsisten.
Q: Composable vs Store, pilih mana?
Logic → composable
State global → store (Pinia)

Post a Comment