PWA
Aşamalı Web Uygulaması
Kısaca
PWA, modern web API'leriyle geliştirilen, bir cihaza kurulabilen, çevrimdışı çalışabilen ve tek kod tabanından yerel uygulama gibi davranan bir web sitesidir.
PWA nedir?
Aşamalı web uygulaması (progressive web app), kurulu bir uygulama gibi hissettirmek için bir dizi tarayıcı özelliğinden yararlanan sıradan bir web sitesidir. Kullanıcılar onu ana ekranlarına ya da masaüstlerine ekleyebilir, tarayıcının adres çubuğu olmadan kendi penceresinde açabilir ve çoğu durumda zayıf ya da hiç internet bağlantısı olmadan da kullanmaya devam edebilir.
Bunu üç parça mümkün kılar. Site HTTPS üzerinden sunulmalıdır; uygulamanın adını, ikonlarını, renklerini ve başlangıç URL'sini tanımlayan küçük bir JSON dosyası olan web app manifest gerekir; ayrıca tarayıcının sayfadan bağımsız olarak arka planda çalıştırdığı bir betik olan service worker ağ isteklerini araya girip yakalayabilir, dosyaları çevrimdışı kullanım için önbelleğe alabilir ve push bildirimleri alabilir. Aşamalı (progressive) sözcüğü, bu özelliklerin bir kısmından yoksun tarayıcılarda uygulamanın yine normal bir web sitesi olarak çalıştığı anlamına gelir.
PWA'yı bavul hazırlamayı öğrenmiş bir web sitesi olarak düşünün: ağdan uzakta da çalışabilmek için ihtiyaç duyduklarının kopyalarını saklar. PWA'lar haber siteleri, çevrimiçi mağazalar, üretkenlik araçları ve ayrı iOS ve Android sürümleri olmadan birçok cihaza ulaşması gereken her uygulama için popülerdir.
PWA, yerel (native) uygulamayla aynı şey değildir. Tarayıcı motorunda çalışır ve yalnızca tarayıcının sunduğu cihaz özelliklerini kullanabilir; destek platforma göre değişir, arka planda eşzamanlama (background sync) gibi bazı özellikler iOS'ta Android ve masaüstüne göre daha sınırlıdır. PWA'lar bazen sarmalayıcı araçlar sayesinde uygulama mağazalarında listelenebilir, ama altta yine birer web uygulamasıdır.
Önemli noktalar
- PWA, kurulabilen ve uygulama gibi kullanılabilen bir web sitesidir.
- HTTPS, bir web app manifest ve bir service worker gerektirir.
- Service worker'lar dosyaları önbelleğe alarak uygulamanın çevrimdışı çalışmasını sağlar.
- Tek kod tabanı tarayıcılara, telefonlara ve masaüstlerine hizmet verir.
- Kullanılabilir cihaz özellikleri tarayıcıya ve platforma bağlıdır.
Örnek
// main.js: register the service worker if the browser supports it
if ("serviceWorker" in navigator) {
navigator.serviceWorker.register("/sw.js");
}
// sw.js: cache key files at install, then serve them when offline
self.addEventListener("install", (event) => {
event.waitUntil(
caches.open("v1").then((cache) => cache.addAll(["/", "/app.css", "/app.js"]))
);
});
self.addEventListener("fetch", (event) => {
event.respondWith(caches.match(event.request).then((hit) => hit || fetch(event.request)));
});Sık sorulan sorular
PWA ile yerel uygulama arasındaki fark nedir?
Yerel uygulama, iOS veya Android gibi belirli bir platform için yazılır, bir uygulama mağazasından kurulur ve cihaz özelliklerine tam erişimi vardır. PWA ise web teknolojileriyle geliştirilir, tarayıcı motorunda çalışır ve doğrudan bir web sitesinden kurulabilir; ancak yalnızca tarayıcının izin verdiği özellikleri kullanabilir.
PWA'lar iPhone'da çalışır mı?
Evet. iOS ve iPadOS'ta kullanıcılar bir PWA'yı tarayıcının Paylaş menüsünden ana ekrana ekleyebilir ve ana ekran web uygulamaları push bildirimleri alabilir. Arka planda eşzamanlama gibi Android ve masaüstünde bulunan bazı özellikler ise daha sınırlıdır.
Service worker nedir?
Service worker, tarayıcının web sayfasından bağımsız olarak arka planda çalıştırdığı bir JavaScript dosyasıdır. Ağ isteklerini yakalayabilir, cihaz çevrimdışıyken önbelleğe alınmış yanıtları sunabilir ve push bildirimlerini işleyebilir.
İlgili sayfalar
- JavaScriptWeb Geliştirme, s. 25JavaScript, web tarayıcılarında sayfaları etkileşimli hale getiren ve Node.js gibi çalışma ortamlarıyla sunucularda da çalışan programlama dilidir.
- HTTPSGüvenlik, s. 15HTTPS, tarayıcı ile web sitesi arasındaki trafiği TLS ile şifreleyen, verileri dinlemeye ve değiştirilmeye karşı koruyan HTTP'nin güvenli sürümüdür.
- SPAWeb Geliştirme, s. 42SPA, tek bir HTML sayfası yükleyip içeriği JavaScript ile güncelleyen ve görünümler arası geçişte sayfayı yeniden yüklemeyen web uygulamasıdır.
- Duyarlı TasarımWeb Geliştirme, s. 15Duyarlı tasarım, web sayfalarının yerleşimini, görsellerini ve metnini telefondan büyük monitöre her ekran boyutuna otomatik uyduran yaklaşımdır.
- ÖnbellekBackend ve API'ler, s. 34Önbellek, sık kullanılan verilerin kopyalarını tutan hızlı ve geçici bir depolama katmanıdır; sonraki istekler yavaş işi tekrarlamadan hızla karşılanır.
- JSONBackend ve API'ler, s. 24JSON, yapılandırılmış veriyi anahtar-değer çiftleri ve listelerle saklayıp aktarmaya yarayan, insanın da makinenin de okuyabildiği hafif bir metin biçimidir.
- Progressive EnhancementWeb Geliştirme, s. 35Progressive enhancement, herkes için çalışan temel bir sayfayla başlayıp tarayıcı desteklediğinde daha zengin özellikler ekleyen web tasarım stratejisidir.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin