Panduan lengkap Web APIs modern untuk pengembangan aplikasi web
Web APIs adalah antarmuka pemrograman yang disediakan browser untuk berinteraksi dengan fitur browser dan sistem operasi. Ini berbeda dari JavaScript inti (ECMAScript).
// DOM Manipulation
const button = document.querySelector('#myButton');
button.addEventListener('click', () => {
console.log('Button clicked!');
});
// Fetch API
fetch('https://api.example.com/data')
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
đ Penjelasan Detail:
âĸ DOM API
- Untuk manipulasi elemen HTML
âĸ Fetch API
- Untuk permintaan jaringan (HTTP requests)
âĸ Web Storage
- Penyimpanan lokal (localStorage, sessionStorage)
âĸ Geolocation
- Akses lokasi pengguna
âĸ Canvas
- Untuk menggambar grafis secara dinamis
// Local Storage
localStorage.setItem('username', 'JohnDoe');
const user = localStorage.getItem('username');
// Geolocation
navigator.geolocation.getCurrentPosition(
(position) => {
console.log('Latitude:', position.coords.latitude);
},
(error) => {
console.error('Error getting location:', error);
}
);
// Service Workers
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('/sw.js');
}
Browser menyediakan berbagai Web APIs: DOM, Fetch, Web Storage, Geolocation, Canvas, Web Audio, WebRTC, Service Workers, dan banyak lagi.
// Perbandingan Storage APIs
Cookies // 4KB, dikirim ke server, kadaluarsa
localStorage // 5-10MB, persisten, hanya client-side
sessionStorage // 5-10MB, hilang saat tab ditutup
IndexedDB // >50MB, database NoSQL client-side
// Perbandingan Request APIs
XMLHttpRequest // Legacy, callback-based
Fetch API // Modern, promise-based
Axios // Library populer, fitur tambahan
đ Penjelasan Detail:
âĸ Storage APIs - Untuk penyimpanan data di browser
âĸ Cookies - Kecil (4KB), selalu dikirim ke server dengan permintaan
âĸ Web Storage - Lebih besar (5-10MB), hanya diakses di client-side
âĸ IndexedDB - Untuk penyimpanan data terstruktur dalam jumlah besar
âĸ Fetch API - Pengganti modern untuk XMLHttpRequest
// Web Workers
const worker = new Worker('worker.js');
worker.postMessage('Start processing');
worker.onmessage = (e) => {
console.log('Message from worker:', e.data);
};
// WebSocket
const socket = new WebSocket('wss://example.com/socket');
socket.onopen = () => {
socket.send('Hello Server!');
};
socket.onmessage = (e) => {
console.log('Message from server:', e.data);
};
// Intersection Observer
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
entry.target.classList.add('visible');
}
});
});
observer.observe(document.querySelector('.lazy-load'));
Web Workers untuk multithreading, WebSocket untuk komunikasi real-time, Intersection Observer untuk deteksi elemen yang terlihat, dan banyak API modern lainnya.
Selalu periksa dukungan browser, gunakan polyfill untuk API baru, tangani error dengan baik, dan optimalkan performa.
// â
Good - Feature detection
if ('IntersectionObserver' in window) {
// Gunakan IntersectionObserver
} else {
// Fallback untuk browser lama
}
// â Avoid - Asumsi API selalu tersedia
navigator.geolocation.getCurrentPosition(callback);
// Bisa error jika geolocation tidak didukung
// â
Better - Error handling
try {
const mediaStream = await navigator.mediaDevices.getUserMedia({
video: true
});
} catch (error) {
console.error('Error accessing camera:', error);
// Tampilkan pesan ke pengguna
}
đ Penjelasan Detail:
âĸ Feature detection - Selalu periksa dukungan browser sebelum menggunakan API
âĸ Error handling - Tangani error dengan baik untuk pengalaman pengguna yang lebih baik
âĸ Performance - Web Workers untuk tugas berat, debounce/throttle untuk event handlers
âĸ Security - Batasi akses API sensitif (seperti kamera/lokasi)
âĸ Privacy - Beri tahu pengguna saat mengakses data pribadi
âĸ Polyfills - Gunakan untuk API baru di browser lama
Beberapa tools berguna: Can I Use (kompatibilitas browser), MDN Web Docs (dokumentasi), Polyfill.io (polyfill service), dan Web API Manager untuk testing.
đ Sumber Belajar Lanjutan:
âĸ MDN Web APIs - Dokumentasi resmi Mozilla
âĸ Web.dev - Panduan modern dari Google
âĸ Can I Use - Tabel kompatibilitas browser
âĸ Web Platform Tests - Test suite untuk Web APIs
âĸ Browser Compatibility Data - Data dukungan browser terkini