Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mohawk2/mojolicious-plugin-serviceworker
Mojolicious plugin to add a Service Worker
https://github.com/mohawk2/mojolicious-plugin-serviceworker
javascript-service-worker mojolicious-plugin perl
Last synced: about 2 months ago
JSON representation
Mojolicious plugin to add a Service Worker
- Host: GitHub
- URL: https://github.com/mohawk2/mojolicious-plugin-serviceworker
- Owner: mohawk2
- Created: 2020-07-20T00:44:43.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2020-07-20T13:16:20.000Z (over 4 years ago)
- Last Synced: 2024-10-13T11:43:09.021Z (3 months ago)
- Topics: javascript-service-worker, mojolicious-plugin, perl
- Language: Perl
- Homepage: https://metacpan.org/pod/Mojolicious::Plugin::ServiceWorker
- Size: 13.7 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: Changes
Awesome Lists containing this project
README
# NAME
Mojolicious::Plugin::ServiceWorker - plugin to add a Service Worker
# SYNOPSIS
# Mojolicious::Lite
plugin 'ServiceWorker' => {
route_sw => '/sw2.js',
precache_urls => [
],
};
app->serviceworker->add_event_listener(push => <<'EOF');
function(event) {
if (event.data) {
console.log('This push event has data: ', event.data.text());
} else {
console.log('This push event has no data.');
}
}
EOF# DESCRIPTION
[Mojolicious::Plugin::ServiceWorker](https://metacpan.org/pod/Mojolicious::Plugin::ServiceWorker) is a [Mojolicious](https://metacpan.org/pod/Mojolicious) plugin.
# METHODS
[Mojolicious::Plugin::ServiceWorker](https://metacpan.org/pod/Mojolicious::Plugin::ServiceWorker) inherits all methods from
[Mojolicious::Plugin](https://metacpan.org/pod/Mojolicious::Plugin) and implements the following new ones.## register
my $p = $plugin->register(Mojolicious->new, \%conf);
Register plugin in [Mojolicious](https://metacpan.org/pod/Mojolicious) application, returning the plugin
object. Takes a hash-ref as configuration, see ["OPTIONS"](#options) for keys.# OPTIONS
## route\_sw
The service worker route. Defaults to `/serviceworker.js`. Note that
you need this to be in your app's top level, since the service worker
can only affect URLs at or below its "scope".## debug
If a true value, `console.log` will be used to indicate various events
including SW caching choices.## precache\_urls
An array-ref of URLs that are relative to the SW's scope to load into
the SW's cache on installation. The SW URL will always be added to this.## network\_only
An array-ref of URLs. Any fetched URL in this list will never be cached,
and always fetched over the network.## cache\_only
As above, except the matching URL will never be re-checked. Use only
where you cache-bust by including a hash in the filename.## network\_first
As above, except the matching URL will be fetched from the network
every time and used if possible. The cached value will only be used if
that fails.**Any URL not matching these three criteria** will be treated with a
"cache first" strategy, also known as "stale while revalidate": the cached
version will immediately by returned to the web client for performance,
but also fetched over the network and re-cached for freshness.# HELPERS
## serviceworker.route
my $route_name = $c->serviceworker->route;
The configured ["route\_sw"](#route_sw) route.
## serviceworker.config
my $config = $c->serviceworker->config;
The SW configuration (a hash-ref). Keys: `debug`, `precache_urls`,
`network_only`, `cache_only`, `network_first`.## serviceworker.add\_event\_listener
my $config = $c->serviceworker->add_event_listener(push => <<'EOF');
function(event) {
if (event.data) {
console.log('This push event has data: ', event.data.text());
} else {
console.log('This push event has no data.');
}
}
EOFAdd to the service worker an event listener. Arguments are the event
name, and a JavaScript function expression that takes the correct args
for that event.## serviceworker.event\_listeners
my $listeners = $c->serviceworker->event_listeners;
Returns a hash-ref mapping event name to array-ref of function
expressions as above. `install` and `fetch` are provided by default.# TEMPLATES
Various templates are available for including in the app's templates:
## serviceworker-install.html.ep
A snippet of JavaScript that will install the supplied service
worker. Include it within a `script` element:
%= include 'serviceworker-install'
# SEE ALSO
[Mojolicious](https://metacpan.org/pod/Mojolicious), [Mojolicious::Guides](https://metacpan.org/pod/Mojolicious::Guides), [https://mojolicious.org](https://mojolicious.org).