Comments (2)
Currently, the offfline-manager register assuming it is included inside the index.html document at the root of the site (independently of the root being / or /gh-repo-name/ as it uses.
Indeed, you might call this the "single-page app" assumption. It wasn't a conscious decision, just a consequence of the bias towards SPAs in the reference apps we built while developing the first version of Oghliner.
GitHub Pages isn't SPA-specific, and it's a reasonable host for multi-page apps (provided they don't have a server-side application layer). So I agree that Oghliner should support management of the offline worker from multiple pages of the site.
But if the user want to provide update checking from other pages not in the root of the site, the offline-manager need to reference the actual path for the worker without assumptions, the site-root option allows the manager to exactly know where the service worker is located.
Yes, site-root is a good solution to this problem!
Its only limitation is that it ties the app to a particular path, whereas sites can sometimes have multiple paths. For example, my Egg Timer app is available at both https://eggtimer.org/ and https://mykmelez.github.io/eggtimer/. And when developing it locally, I sometimes start a web server with a root directory set to the app's build directory, so its URL is http://localhost/; but other times I set the root directory above the build directory, and its URL is http://localhost/path/to/build/dir/.
Nevertheless, I don't actually want people to use https://mykmelez.github.io/eggtimer/ (and in fact I should redirect that URL to the other one). And I can work around any limitation when developing locally simply by setting the web server's root directory consistently.
Plus, Egg Timer is a poor example here, since it's an SPA that doesn't need this feature. And I don't know of a better approach than site-root anyway; anything we did to accommodate multiple possible root paths would be significantly more complicated.
So I think we should do it!
from oghliner.
To be working on a Jekyll static site using oghliner is enlightening to come up with these kind of issues as I was used to work in SPAs too.
from oghliner.
Related Issues (20)
- Update travis-encrypt to version 2
- Oghliner service worker is not deleting out of date offline caches HOT 1
- Tests intermittently fail
- For each `index.html`, cache its parent directory too HOT 1
- Use arrow functions in the service worker HOT 1
- Make Service Worker tests to run on Travis HOT 2
- Provide integration tests for the service worker
- Rewrite some of the testOffline.js tests HOT 3
- Setup code coverage for service worker tests
- Assert that prepareCache returns a cache HOT 1
- Consider taking into account imported scripts via `importScript` to generate cache name HOT 1
- Make the update event smarter by avoiding re-fetching non changed files
- Display update notifications for global CLI using update-notifier
- templatze or customize the "a newer version of this page is availalbe" message in offline-manager.js
- oghliner offline ./dist/ doesn't strip dist/ from paths of offlined files
- oghliner.deploy is a footgun HOT 3
- "CLI interface, oghliner as a template/tool" live tests failing HOT 1
- test-sw fails with 'Cannot load browser "Chrome"!'
- switch to using the "deploy" step with a "script" provider
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from oghliner.