در این ارائه به معرفی قابلیت جدیدی در مروگر ها با عنوان Service Worker می پردازیم، قابلیتی که کمک میکند اپلیکیشن های تحت وب به اپلیکیشن های native نزدیکتر شوند. سابقا محدوده عمل یک اپلیکیشن تحت وب صرفا یک صفحه وب بود، اما اکنون Service Worker به اپلیکیشن تحت وب این امکان را میدهد که در ورای یک صفحه وب به حیات خودش ادامه دهد. همچنین این تکنولوژی به عنوان بستری برای قابلیت های دیگر نظیر Push Notification، مدیریت محتوای آفلاین، همگام سازی در پس زمینه و مواردی از این دست که سابقا فقط در اپلیکیشن های native قابل پیاده سازی بود، عمل میکند.
2. HTML 5 Semantics,
Document Object Model
App Cache, Local Storage,
Indexed DB, File API
GeoLocation, Drag and Drop,
Full Screen API, Notification
Web Sockets, Push API
WebRTC
امروز تا گذشته از وب استانداردهای
Multimedia, Animation,
Poiter Lock, Web Audio
SVG, Canvas,
WebGL, CSS3 3D
Web Workers, Shared Workers,
Shadow DOM, History API
CSS Object Model, Media Query,
WOFF, CSS Animation and Effects
5. ServiceWorker for Offline Apps
چراازAppCacheاستفادهنکنیم؟
•بیشازحدپیچیدهاست.
•انعطافپذیرنیستوفقطبرایUse Caseهایخاص
کاربرددارد.
• “The ApplicationCache spec is like an onion:
it has many many layers, and as you peel
through them you’ll be reduced to tears.”
•درآیندهServiceWorkerجایگزینAppCache
خواهدشد.
6. ServiceWorker for Offline Apps
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('/sw.js');
}
self.addEventListener('install', function(event) {
event.waitUntil(
caches.open('static-v1').then(function(cache) {
return cache.addAll([
'/index.html',
'/fallback.html',
new Request('//mycdn.com/style.css', {mode: 'no-cors'}),
new Request('//mycdn.com/script.js', {mode: 'no-cors'})
]);
})
);
});
self.addEventListener('fetch', function(event) {
event.respondWith(
caches.match(event.request).then(function(response) {
return response || event.default();
}).catch(function() {
return caches.match('/fallback.html');
})
);
});
in index.html:
in sw.js: