jsp-js
Version:
render JSP to HTML
76 lines (53 loc) • 1.67 kB
Markdown
JSP-JS [](https://travis-ci.org/ThisPlace/jsp-js)
======
JSP-JS is a Java Server Pages rendering library for nodejs.
To render JSP to HTML, simply remove Java code. Currently supported tags are:
- `<%@include%>`
- `<%@taglib tagdir="[path]">`
- `<%=..%>`
- `${..}`
- `<c:if>`
- `<c:else>`
- `<c:choose>`
- `<c:when>`
- `<c:otherwise>`
- `<c:forEach>`
- `<c:set>`
- `<jsp:body>`
- `<jsp:doBody>`
- `<jsp:attribute>`
- `<jsp:invoke>`
## Tests
Run:
```hash
npm run demo
```
Then open your browser to ```http://localhost:8080/page/test.jsp```.
## Usage
Import he renderer like so:
```js
const JSPJs = require('jsp-js').Renderer;
const jsp = new JSPJs(options);
jsp.render('file', data);
```
The renderer also provides a promise wrapper for easy integration in
promise-based code:
```js
jsp.renderPromise('file', data).then((html) => console.log(html));
```
### Constructor options
The following options can be provided to the constructor:
- `root`: the root path where templates are
- `tags`: a library of custom tags
- `globals`: globally available data
### Custom tags
Custom tags can be handled by providing them to the constructor options. These are
anonymous functions that take the arguments:
- `node` the tag node being evaluated
- `index` the position of the node in the jsp template. Useful for debugging
- `data` the current context data (as an object)
- `renderer` the instanciated renderer
A custom tag handler must return a **string**.
## Usage with Express
Please read the code of `test/tests.js` to have an idea of how to integrate this
library with Express.