Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/kirlovon/simple-ssr

Universal server-side rendering implementation for Node.js
https://github.com/kirlovon/simple-ssr

module nodejs npm puppeteer pwa react server-side-rendering simple spa ssr typescript vue

Last synced: about 2 months ago
JSON representation

Universal server-side rendering implementation for Node.js

Awesome Lists containing this project

README

        




License
Last commit
NPM version
Types

## What is it?
Universal server-side rendering implementation for Node.js. Powered by [Puppeteer](https://github.com/GoogleChrome/puppeteer).

This library allows you to preload your web applications on the server side, and send rendered data to the user.

_In simple terms, this module translates this:_
```html

document.getElementById('app').innerHTML = 'Hello, world!';

```
_To this:_
```html

Hello, world!

document.getElementById('app').innerHTML = 'Hello, world!';

```
*Note: The minimum supported Node version is **Node 7.x***

## Features
* Simplifies crawlers work with your **Single Page Applications** or **Progressive Web Apps**.

* Allows you to cache data, optimizing the server-side rendering process.

* Preload your web applications on the server-side.

* TypeScript support.

## Installation

Installation from the [NPM](https://www.npmjs.com/package/simple-ssr) repository:
```
npm install simple-ssr --save
```

## Example
```javascript
const simpleSSR = require('simple-ssr');

// Puppeteer instance
simpleSSR.browser;

// Enable requests filtering ( Default: true )
simpleSSR.filterRequests = true;

// List of useless for DOM rendering resources
simpleSSR.blockedRequest = ['stylesheet', 'image'];

(async() => {

// Put there Puppeteer config
await simpleSSR.start({ headless: true });

let result = await simpleSSR.render('http://example.com/', {

// Rendering timeout
timeout: 1000,

// When to consider navigation succeeded.
waitUntil: 'load',

// DOM target to wait for
domTarget: ['body', 'h1']
});

console.log(result.url) // 'http://example.com/'
console.log(result.time) // 10000
console.log(result.html) // '...'

})();
```