Node.js HTTP middleware for serving static files of single-page-applications.
npm install static-spaexpress, but it might also work for similar libraries. Basic use:
``js
const path = require('path');
const express = require('express');
const staticSpa = require('static-spa');
const app = express();
app.use(staticSpa(path.join(__dirname, 'public')));
app.listen(8000);
`
Unlike express.static, staticSpa will try to find the nearest index.html and serve that instead if the originally requested file doesn't exist.
It can also take an object for additional options.
`js`
app.use(staticSpa({
dir: path.join(__dirname, 'public'))),
index: 'foobar.html',
});
| key | type | default | description |
|:----|:-----|:--------|:------------|
| dir (required) | string | | The directory to serve from. |index
| | string | "index.html" | The name of the index file(s). |template
| | TemplateOptions | {} | Use to configure templating. Omit to disable templating. |
| key | type | default | description |
|:----|:-----|:--------|:------------|
| index | string | Set to options.index | Use this to distinguish template files from regular index files, for example "index.htmlt" |match
| | string | RegExp | /\$([\w.|]*)\$/g (example: $variable|filter$ or $variable|filter1|filter2$) | Determines what to replace. |split
| | string | RegExp | "|" | Character to use for filters. |data
| | object | {} | The data to use when templating files. |fitlers
| | { [name: string]: (value: any) => any } | defaultFilters | The list of filters to use in the template. |
Example template with default settings:
`html`
$title$
You can use clean to insert safe HTML.
`html`
Default filters:
- clean => Replaces special characters with HTML entities.encode
- => Encodes string using encodeURLComponent.date
- => Converts variable to a date.number
- => Converts variable to a number.boolean
- => Converts variable to a boolean.json
- => Prints variable as JSON using JSON.stringify`.