2
0
Fork 0
es5-ff-spa-loader/README.md

195 lines
6.7 KiB
Markdown
Raw Normal View History

2015-12-22 20:41:40 +00:00
es5-ff-spa-loader
2015-12-23 00:16:54 +00:00
=========
A javascript library providing server defined loading of assets for a single page application.
2015-12-23 00:16:54 +00:00
## Installation
npm --save install es5-ff-spa-loader
2015-12-23 00:16:54 +00:00
2016-01-18 01:06:24 +00:00
Then use the dist/es5-ff-spa-loader.min.js script inline in the index.
2015-12-23 00:16:54 +00:00
## Features
2015-12-23 00:16:54 +00:00
* Assets caching for offline use.
* Assets hashing for fast syncing.
* Assets types: js,css,cssData
* Caching backends: null,localStorage,webSqlDB,sqllite
* Server url question ui.
* Loader error ui.
* Build-in Cordova booting.
* Build-in AngularJS booting.
## Usage
### Usage Multi Server (Minimal)
FFSpaLoader.options.server.assets = '/api/path/to/spa/client/resources';
FFSpaLoader.start();
### Usage Single Server
FFSpaLoader.options.server.url = 'http://myserver';
FFSpaLoader.options.server.assets = '/api/path/to/spa/client/resources';
FFSpaLoader.start();
### Usage Angular
FFSpaLoader.options.debug.enable = true;
FFSpaLoader.options.boot.angular.modules.push('exampleUI');
FFSpaLoader.options.server.url = 'http://myserver';
FFSpaLoader.options.server.assets = '/api/path/to/spa/client/resources';
FFSpaLoader.start(function() {
console.log('FFExample.boot done');
});
## Assets format
{
"data": {
"resources": [
{
"url": "/static/js/assets.js",
"type": "js",
"hash": -164319899
},
{
"url": "/static/css/assets.css",
"type": "css",
"hash": 1391550981
},
{
"url": "/static/css/assets-data.css",
"type": "cssData",
"hash": 1371811412
},
]
}
The hash key is required as only on hash change the resource will be downloaded again, so multiple small files makes updates faster.
2015-12-23 00:16:54 +00:00
## Options
The available FFSpaLoader.options.* values;
* debug.enable = Enable debug output. (default: false)
* debug.handler = Prints/log debug message. (default: console.log)
* debug.prefix = Debug message prefix. (default: 'FFSpaLoader.')
* error.handler = The error handler. (default: internal error handler ui)
* error.title = The error title. (default: 'Loader ');
* error.style = The error ui css style. (default: red border box)
* boot.cordova.enable = Use deviceready event to boot when cordova is detected. (default: true)
* boot.cordova.timeout = Boot after (if<0=no-)timeout when deviceready event is not received. (default: -1)
* boot.cordova.flag = The window flag which is set when cordova is booted. (default: 'FFCordovaDevice')
* boot.angular.enable = Auto bootstrap angular modules. (default: true)
* boot.angular.modules = The angular modules to boot. (default: empty)
* server.url = The server url like 'https://myhost', when null the user will get promted to input it. (default: null)
* server.assets = The server path to the assets resources definition file, is required (default: null)
2016-01-18 21:41:52 +00:00
* server.timeout = The timeout to download the server resources. (default: 4096)
* server.flag = The window flag which is set when the server.url is know. (default: 'FFServerUrl')
2016-01-21 19:42:18 +00:00
* question.transport = The transport to prefix the server.url with. (default: 'http://')
* question.title = The question ui title. (default: 'Server')
* question.text = The question ui text. (default: 'Please provide the server name;')
* question.style = The question ui css style.(note: pending change) (default: green border box)
2016-01-21 21:17:22 +00:00
* question.validate.min.value = The minimal hostname length, false is disabled (default: 3)
* question.validate.min.message = The error message (default: 'Server name is to short.')
* question.validate.max.value = The maximal hostname length, false is disabled (default: 255)
* question.validate.max.message =The error message (default: 'Server name is to long.')
* question.validate.regex.value = The regex to validate the hostname, false is disabled. (default: '^([a-zA-Z0-9\.\:])*$')
* question.validate.regex.message = The error message (default: 'Server name is invalid.')
* cache.meta = The cache backend for the meta information(server.url+content), null is auto select,false is disable. (default: null)
* cache.js = The cache backend for for js, null is auto select,false is disable. (default: null)
* cache.css = The cache backend for for css, null is auto select,false is disable. (default: null)
* cache.cssData = The cache backend for for cssData, null is auto select,false is disable. (default: null)
## Factory
The available FFSpaLoader.factory.* functions;
* detect.localStorage() = Checks is localStorage is working.
* detect.openDatabase() = Checks if openDatabase is defined.
* detect.sqlitePlugin() = Checks if sqlitePlugin is defined.
* detect.cordova() = Checks if cordova is defined.
* detect.cordovaDevice() = Checks if cordovaDevive window flag is defined which will be set by the buildin cordova boot code.
* cache.localStorage() = Creates an localStorage service.
* cache.websql(opt) = Creates an websql service.
## Cache Config
Per default all cache type as in auto select mode which detect and used the following;
* sqlitePlugin
* openDatabase
* localStorage
* none
2016-01-18 01:06:24 +00:00
More custom schemas are possible like; (todo: needs testing)
2016-01-21 00:40:15 +00:00
FFSpaLoader.options.cache.meta = false;
FFSpaLoader.options.cache.js = false;
FFSpaLoader.options.cache.css = false;
FFSpaLoader.options.cache.cssData = false;
if (FFSpaLoader.factory.detect.localStorage()) {
FFSpaLoader.options.cache.css = FFSpaLoader.factory.cache.localStorage;
FFSpaLoader.options.cache.cssData = FFSpaLoader.factory.cache.localStorage;
}
FFSpaLoader.options.server.assets = '/api/path/to/spa/client/resources';
FFSpaLoader.start();
2015-12-23 00:16:54 +00:00
## Example Application
There is a fully working nodejs example application in the example folder.
2015-12-23 00:16:54 +00:00
## Tested Browsers
* Chromium 46
* Iceweasel 43
* Opera 12 Presto
* IE 11 Edge
* Android 5 in Cordova
2016-01-17 20:57:59 +00:00
## Todo
* test in production
* Server header set+check support
* Redo css(?divs) of server question
* Add table+instance websql options so it can also be used in application code.
2016-01-17 20:57:59 +00:00
* Add more tests
* css: set tag.media = 'only you';
* css: add media in resouces
* Add in browser tests
2015-12-23 00:16:54 +00:00
## Contributing
In lieu of a formal styleguide, take care to maintain the existing coding style.
Add unit tests for any new or changed functionality. Lint and test your code.
## Release History
2016-01-21 19:42:18 +00:00
### 0.1.0
* Moved options.server.question to options.question
2016-01-21 21:17:22 +00:00
* Added question.validate.[min|max|regex].value|message options.
* Strip question value to hostname+port before use and validating.
* Allow user upgrade to https in question input from default of transport option.
2016-01-21 19:42:18 +00:00
### 0.0.4
2016-01-21 00:40:15 +00:00
* Added auto cache clean code
* Disable cordova timeout per default.
* Remove unused mobileAgent detect.
2016-01-21 00:40:15 +00:00
* Fixed cached resources injection order.
2016-01-18 01:06:24 +00:00
### 0.0.3
* Fixed example script path.
2016-01-18 01:06:24 +00:00
2016-01-18 00:25:49 +00:00
### 0.0.2
* Fixed example size.
2016-01-18 00:25:49 +00:00
### 0.0.1
* Initial release.