ForgeKomponenty
sk

Komponenty

j-ServiceWorker

jComponent 20 · jcomponent@20 component

Komponent zaregistruje /sw-jcomponent.js a odošle mu zoznam aktív, verziu vyrovnávacej pamäte a núdzový režim offline zo svojho zdroja údajov. Podávajte aplikáciu cez HTTPS alebo localhost a umiestnite pracovníka na koreňovú adresu URL, aby mohol spracovávať stránky aplikácie.

  • Tento komponent je trochu špeciálny. Najprv musíte vložiť nižšie uvedený kód do súboru napr. sw-jcomponent.js a vložte ho do public (napr. myproject/public/sw-jcomponent.js)
var prefix='jc';function hash(s,unsigned){var hash=0,i,char;if(!s.length)return hash;var l=s.length;for(i=0;i<l;i++){char=s.charCodeAt(i);hash=((hash<<5)-hash)+char;hash|=0;}return unsigned?hash>>>0:hash}self.addEventListener('install',()=>{self.skipWaiting()});self.addEventListener('message',function(e){if(e.data.action==='jc-sw'){var data=e.data.data;data.name=prefix+'-'+data.version+'-'+hash(data.assets.toString(),true);addcache(e.data.data)}});self.addEventListener('fetch',function(e){e.respondWith(fetch(e.request).catch(function(){return caches.match(e.request).then(function(response){if(response)return response;if(e.request.mode==='navigate'||(e.request.method==='GET'&&e.request.headers.get('accept').includes('text/html')))return caches.match('jc-offline-fallback')})}))});function addcache(data){caches.open(data.name).then(function(cache){if(data.assets&&data.assets.length)cache.addAll(data.assets);if(data.fallback){fetch(data.fallback,{mode:'no-cors'}).then(function(response){return cache.put('jc-offline-fallback',response)})}}).then(function(){caches.keys().then(function(keys){return Promise.all(keys.map(function(key){if(data.name!==key)return caches.delete(key)}))})})}
  • Komponent bude komunikovať s týmto kódom service worker.

Konfigurácia:

  • Údaje o vypršaní platnosti expire {String} z úložiska používateľov (predvolené: 1 day) neodporúčame to meniť
  • debug {Boolean} umožňuje režim debug. Pri každom opätovnom načítaní obnoví aktíva (takže nemusíte meniť verziu) (predvolené: false)
  • datasource {String} cesta k zdroju údajov (zdroj údajov je objekt)

Štruktúra zdroja údajov:

{
	version: '1.00',
	fallback: '/',
	assets: [
		'/js/default.js'
	]
}

Je dobré vedieť:

  • PATH možno použiť ako dynamickú verziu. Okamžite obnoví podklady (bez opätovného načítania stránky), napr. SET('version', '1.35')
  • Po pridaní/odstránení niečoho z aktív nie je potrebné zvyšovať verziu
  • fallback vykonáva offline verziu html. napr. fallback: '/offline.html'
  • Aktívom môže byť všetko: písma, čiastočné stránky, súbory css, súbory javascript
  • Funguje to iba v aplikáciách s jednou stránkou, ako je toto alebo toto

Použitie:

<ui-component name="serviceworker" path="version" config="datasource:mysource"></ui-component>

<script>
	var version = '1.34';
	var mysource = {
		version: version,
		fallback: '/',
		assets: [
			'/pages/settings.html',
			'/pages/articles.html',
			'/pages/dashboard.html'
		]
	};
</script>

Zdroj: Total.js komponenty. Autorské práva Denis Granec. Licencia MIT.