Offline web pages by persisting DOM to IndexedDB/WebSQL.
npm install domsnap
DOMSnap
=================
Offline web pages by persisting DOM to IndexedDB/WebSQL.
Please try the demo.
How it works
=============
HTML5 provides LocalStorage, IndexedDB, and window.caches to build offline web apps.
But all of these technologies, we can't miss local database.
DOMSnap takes full advantage of offline technologies.
Storing HTML to local IndexedDB/WebSQL and resumeing when you're offline.
With DOMSnap, web pages can resume to their last state with less request to the server and less template render.
Think offline is a long way out, why not just give DOMSnap a try?
Usage
=========
1.Include dist/DOMSnap.min.js file in your HTML
``
`
2.Or insttall the package
``
npm install --save domsnap`
and require it in your files`
var DOMSnap = require('domsnap');
Examples
`javascript
//init DOMSnap
var DS = DOMSnap({
onReady: function(){
console.log('DOMSnap is ready');
}
});
//capture snapshot html of #main
DS.capture('#main');
//capture with specified capture id
DS.capture('#main', {id: 'my_id'});
//set the html of #main by it's captured snapshot html
DS.resume('#main');
//set by specified capture id
DS.resume('#main',{id: 'my_id'});
`
APIs
=========
Initialize DOMSnap
Parameters
- config object [optional]config.onReady
- function will be called when DOMSnap is readyconfig.version
- number Version control, Nonzero. Update is required if web app has been updated. Default is 1config.scope
- string "host|path|or any string value". "host": location.host; "path": location.host+location.pathname; default is "path"config.storeType
- string Data store to use. "IndexedDB" or "WebSQL", if not defined, use "WebSQL" for iOS and "IndexedDB" for others.
Returns object {{capture: capture, resume: resume, get: get, getAll: getAll, remove: remove, clear: clear}|*}
capture snapshot html of the element matches the selector and store the result with a capture id
Parameters
- selector string selector of the elementoptions
- object [optional]options.id
- string or function capture id, if html is not null set id to null to store html as the default snapshotoptions.html
- string or function snapshot html, set id to null to store html as the default snapshot
Returns DOMSnap
set the html of the element matches the selector [and capture id] by it's captured snapshot html
Parameters
- selector string selector of the elementoptions
- object [optional]options.id
- string or function capture id, if html is not null set id to null to store html as the default snapshotoptions.fallback
- function a callback function, will be called if no snapshot matched
Returns DOMSnap
watch and auto capture the element matches the selector
Parameters
- selector string or array selector[s] of the element[s]options
- object [optional]options.id
- string or function capture idoptions.html
- string or function snapshot html
Examples
`javascript
//e.g.1
DS.watch('#main');
//e.g.2
DS.watch('#main',{
id: 'my_capture_id',//capture id
html: 'my_snapshot_html'//snapshot html
});
//e.g.3
DS.watch('#main',{
id: function(selector){ return 'generated_capture_id_for_'+selector;}, //return capture id
html: function(selector){ return 'generated_snapshot_html_for_'+selector;} //return snapshot html
});
//e.g.4
DS.watch(['#main', '#another']);//watch multi elements
`
Returns DOMSnap
retrun the captured snapshot html of the element matches the selector and capture id
Parameters
- selector string selector of the elementid
- string [optional]capture id, the result be the default snapshot if it's not specified
Returns string html
retrun all the captured snapshots html of the element matches the selector
Parameters
- selector string selector of the element
Returns object all snapshots as object - e.g. {DEFAULT_CAPTURE_ID: 'html of DEFAULT_CAPTURE', my_id: 'html of my_id'}
remove the captured snapshot html of the element matches the selector [and capture id]
Parameters
- selector string selector of the elementid
- string [optional]capture id, will empty all snapshots if it's not specified
Returns DOMSnap
clear all captured snapshots
Parameters
- version number [optional]Same value as initialize DOMSnap if it's not specified.
Returns DOMSnap
Roadmap & Make contributions
==============
- on-going Auto watch and auto resume.
- on-going Auto clear expired capture.
- Resume with DOM diff.
- on-going Events(ready, before resume, after resume, before capture, after capture)
- Replace lovefiled with a lightweight IndexedDB/WebSQL wrapper.
Build
==============
1. install requirements run `npm install``
2. build and watch run gulp``
Find me
=================
* Twitter @unbug
* 微博 @听奏
Dependencies
=================
* Google Lovefield
LICENSE
=========
The MIT License (MIT)
Copyright (c) <2016>