A router for generating a static site that can turn into a single page app.
npm install blaster


``js
var Router = require('blaster')
var createElement = require('base-element')
var fs = require('vinyl-fs')
// Pass routes that return virtual nodes or HTML
var router = new Router({
'/': function (params, done) {
return createElement().render(function () {
return this.html('button', 'click me')
})
},
'/about.html': function (params, done) {
done(null, 'about page')
}
})
// Generate static pages to the ./dist folder
router.generate().pipe(fs.dest('./dist'))
`
Which will generate the HTML files:
`shell`
./dist
├── about.html
└── index.html
From there you can bundle the same router above using whatever tooling you like.
The static files get served and then the bundled client side code takes over
routing.
> See the example folder
for a more in depth example.
which inherits
base-router. Please check the docs
there for all available options and methods.*
routes - An object literal of routes to create.
* options - An object literal to configure operation.$3
Adds a new route. name is the pathname to our route and model is a function
that resolves the data for the route.`js
router.addRoute('/user/:id', function (params, done) {
done(null, params.id)
})
`$3
Returns a stream of vinyl files for each route.$3
Returns a stream of a vinyl file for the given route.$3
Indicates a folder with static files to be included. Useful for dynamic
segments in routes such as /posts/:slug.parseFile is an optional callback to parse the files as they stream:`js
router.files('./markdown-files/', function (file, enc, next) {
file.contents = marked(file.contents)
this.push(file)
next()
})
``