stream-render v2.0.0
stream-render - render templates asynchronous
Introduction
With stream-render you can insert information into files before you send them to the user.
The advantage of stream-render is that it processes your file line by line so it uses few memory and the processed lines can be send to the user immediately.
Installation
npm install stream-render
Templates
The easiest way is to create a directory called views in your projects folder.
Then you can create Templates in this directory.
There is no special file extension that you have to use. You can use .html, .txt and others.
Example - Template
This is a file called <pathToYourProject>/views/example.txt
@// use ` and ´ to seperate your js code from other contents.
Hello `username´,
Welcome to our site! three times hurray!
@// if you put an @ in the beginning of a line the whole line gets interpreted as js
@ for(let i = 0; i < 3; i++) {
Hurray
@ }Note: You must add an empty line at the end of your file.
Example - The Result
The file you get from your server after rendering it would look like that:
Hello Hans,
Welcomt to our site! three times hurray!
Hurray
Hurray
HurrayExample - Using stream-render with http-server
const http = require('http');
const render = require('stream-render');
const server = http.createServer((req, res) => {
// our template needs some information
const data = {
username: 'Hans'
};
// render our example template
render(res, 'example.txt', data).then((stream)=>{
stream.end();
});
});
server.listen(3000, function () {
console.log(`Server running on port`, port);
});Example - Using stream-render with express
const app = require('express')();
const render = require('stream-render');
app.get('/example', function (req, res) {
// our template needs some information
const data = {
username: 'Hans'
};
// render our example template
render(res, 'example.txt', data).then((stream)=>{
stream.end();
});
});
app.listen(3000, function () {
console.log('App listening on port 3000!');
});Arguments
When you are calling the render() method you have to provide the following arguments:
- A writable stream
- The filename of the template
- The data to render into the template
Returns
The .render method returns a promise that will be resolved when the rendering has been completed.
Note: The promise will never be rejected.