gwuhaolin / chrome-render

general server render base on headless chrome
95 stars 10 forks source link
headless-chrome server-rendering

Npm Package Build Status Npm Downloads Dependency Status

chrome-render

High-performance and universal server render base on Headless chrome, render any SPA(render data in browser) in server for SEO or other optimizes.

Use

  1. install it from npm by npm i chrome-render

  2. new a ChromeRender then use it to render a web page, a ChromeRender means a chrome.

    const ChromeRender = require('chrome-render');
    // ChromeRender.new() return a Promise, you can use async function in this way:
    // const chromeRender = await ChromeRender.new(); 
    ChromeRender.new({}).then(async(chromeRender)=>{
    const htmlString = await chromeRender.render({
       url: 'http://qq.com',
    });
    });    

    A chromeRender instance can call render multi-times and concurrent for high frequency use case. chromeRender will manage a tabs pool to render multi-pages concurrent.

  3. After you don't need chromeRender anymore, you should call await chromeRender.destroyRender() to kill chrome add release all resource.

see more demo in unit test

API

ChromeRender.new() method support options:

chromeRender.render() method support options:

all request from chrome-render will take with a HTTP header x-chrome-render:${version}

Friends