81 Pengenalan Integrasi Frontend: React, Vue, dan Svelte
Oleh: Engineer yang suka mencoba framework baru
Frontend development selama satu dekade terakhir berkembang sangat pesat. Jika dulu jagoan kita adalah jQuery, sekarang ada ratusan framework yang menawarkan berbagai pendekatan membangun UI secara reaktif dan efisien. Di antara yang paling populer adalah React, Vue, dan Svelte. Namun, bagi engineer, sekadar bisa “menggunakan” saja tidak cukup–memahami cara integrasi, perbandingan arsitektur, serta bagaimana agility dan simplicity mereka, itu seni tersendiri.
Di artikel ini, saya akan membahas pengenalan integrasi tiga framework modern tersebut; kita akan eksplorasi filosofi, cara kerja, kode contoh, simulasi integrasi, serta membandingkan kelebihan dan kekurangannya. Juga, akan saya tambahkan diagram alur menggunakan syntax Mermaid.
Mengapa Butuh Modern Framework?
Sebelum masuk ke teknis, kita perlu paham alasannya dulu. Website sekarang menuntut interactive, component-based, serta real-time update tanpa reload. Vanilla JS atau jQuery akan cepat sekali terasa ribet kalau harus mengelola banyak state dan DOM berantai. Solusinya: declarative UI.
Tiga framework yang akan kita bahas sudah terbukti produksi dan dipakai skala enterprise:
Framework | Pengembang | Tahun Rilis | Popularitas GitHub (2024) |
---|---|---|---|
React | Facebook/Meta | 2013 | 215k+ Stars |
Vue | Evan You + komunitas | 2014 | 207k+ Stars |
Svelte | Rich Harris | 2016 | 78k+ Stars |
Filosofi Dasar: React, Vue, Svelte
- React: “Just JavaScript”. Berbasis pada virtual DOM dan deklaratif. Mengatur UI layaknya fungsi dari state.
- Vue: Progressive framework. Sangat fleksibel, sintaks template familiar bagi pengguna HTML.
- Svelte: Compiler, bukan framework runtime. Menghilangkan virtual DOM, generate kode JS yang sangat ringan dan performant.
Diagram Konsep
graph LR State -->|Trigger| UI[Update UI] UI ---> UserInput[User Action] UserInput --> State note right of State: Proses ini terjadi di
semua framework modern
(React, Vue, Svelte)
Oke, Langsung ke Contoh Kode
1. Counter Component: Perbandingan React, Vue, Svelte
React (Functional Component, Hooks)
import { useState } from 'react';
function Counter() {
const [count, setCount] = useState(0);
return (
<div>
<p>React Counter: {count}</p>
<button onClick={() => setCount(count + 1)}>Tambah</button>
</div>
);
}
Vue (Single File Component)
<template>
<div>
<p>Vue Counter: {{ count }}</p>
<button @click="count++">Tambah</button>
</div>
</template>
<script setup>
import { ref } from 'vue'
const count = ref(0)
</script>
Svelte
<script>
let count = 0;
</script>
<p>Svelte Counter: {count}</p>
<button on:click={() => count++}>Tambah</button>
Lihat kan kemiripannya? Tapi perhatikan, di Svelte, state langsung variabel biasa!
Integrasi Dengan Backend (Simulasi Fetch Data)
Pada dunia nyata, frontend pasti berhubungan dengan backend lewat HTTP API. Berikut simulasi fetch data user dari API.
React
import { useEffect, useState } from 'react';
function Users() {
const [users, setUsers] = useState([]);
useEffect(() => {
fetch('/api/users')
.then(res => res.json())
.then(setUsers)
}, []);
return <ul>{users.map(u => <li key={u.id}>{u.name}</li>)}</ul>;
}
Vue
<template>
<ul>
<li v-for="u in users" :key="u.id">{{ u.name }}</li>
</ul>
</template>
<script setup>
import { ref, onMounted } from 'vue'
const users = ref([])
onMounted(async () => {
const res = await fetch('/api/users')
users.value = await res.json()
})
</script>
Svelte
<script>
let users = [];
onMount(async () => {
const res = await fetch('/api/users');
users = await res.json();
});
import { onMount } from 'svelte';
</script>
<ul>
{#each users as user}
<li>{user.name}</li>
{/each}
</ul>
Kapan Integrasi Bermasalah?
Sekarang bayangkan aplikasi lama sudah pakai React, lalu ingin ada modul baru dengan Vue atau Svelte. Apa bisa satu halaman beda framework? Jawabnya: agak repot, tapi Possible via micro-frontend (menggunakan iframe, Custom Element, atau Webpack module federation).
Diagram Alur Integrasi Multi-Framework:
flowchart TD A[Parent App (React)] -->|Expose| B[Micro frontend: Vue component] A -->|Expose| C[Micro frontend: Svelte component] B & C --> D(User Interaction) D -->|Propagate| A note right of D: Semuanya bisa saling komunikasi via
Custom Event, API Bridge, dsb
Perbandingan Integrasi dan Learning Curve
Aspek | React | Vue | Svelte |
---|---|---|---|
Dokumentasi | Lengkap | Mudah & Lengkap | Sederhana |
Komunitas | Sangat besar | Besar | Bertumbuh pesat |
Integrasi ke Legacy | Sangat mudah | Mudah | Sangat mudah |
State Management | Perlu Redux/Context | Vuex/Pinia | Store built-in |
Learning Curve | Menengah | Mudah | Paling Mudah |
Compilation Output | Besar, runtime | Kecil-Sedang, runtime | Kecil, tanpa runtime |
- React sangat modular, mudah dicangkok ke codebase lama (misal inisialisasi
ReactDOM.render
di mana saja). - Vue juga mudah di-embed berkat API yang mirip HTML.
- Svelte bahkan bisa dikompilasi jadi Custom Element (web component) dan di-embed di halaman apapun.
Studi Kasus Integrasi Sederhana (React + Svelte dengan Web Components)
Jika aplikasi utama React, tapi ingin pakai komponen Svelte untuk fitur baru (say, rating bintang):
Di Svelte, compile jadi Custom Element:
<!-- StarRating.svelte -->
<script>
export let value = 0;
</script>
<style>
.star { cursor: pointer; color: gold;}
</style>
<span on:click={() => value = (value + 1) % 6} class="star">
{'★'.repeat(value)}{'☆'.repeat(5-value)}
</span>
<svelte:options tag="star-rating" customElement={true} />
Compile dengan
npx svelte compile StarRating.svelte --customElement
Muncul file JS (misal, StarRating.js
), lalu di React:
import "./StarRating.js"; // hasil kompilasi Svelte
function Feedback() {
return (
<div>
<h2>Berikan Rating:</h2>
<star-rating value={3}></star-rating>
</div>
);
}
Voila. Komponen React dan Svelte hidup harmonis pada satu halaman.
Kesimpulan & Saran Engineer
- React sangat mature, cocok aplikasi besar/modular.
- Vue pilihan mantap bagi yang ingin konvensi rapih dan belajar singkat.
- Svelte unggul dalam kecepatan produksi kode, performa, dan integrasi (jadi web component).
Pilih sesuai kebutuhan bisnis dan skill tim. Semua bisa diintegrasi ke sistem lama, bahkan bercampur. Kuncinya: paham entry point, mounting, dan composability.
Belajar satu, jangan takut eksplorasi yang lain. Karena pada akhirnya, engineer dipandang bukan dari tools yang dipilih, namun solusi yang dihasilkan.
Jangan lupa, framework itu cuma alat. Pemahaman prinsip state, composition, communication antar komponen jelas lebih penting. Selamat bereksperimen!
Tulisan ini bagian dari seri “81 Days of Modern Frontend”, jangan lupa share & follow untuk insight berikutnya!
Artikel Terhangat
90 Strategi Pengujian dan CI/CD graphql-go
09 Sep 2025
88 Struktur Project graphql-go yang Scalable
09 Sep 2025
87 Tips Debugging Resolver dan Query GraphQL
09 Sep 2025

90 Strategi Pengujian dan CI/CD graphql-go

88 Struktur Project graphql-go yang Scalable
