General server render base on chrome
npm install chrome-render



npm i chrome-render2. new a ChromeRender then use it to render a web page, a ChromeRender means a chrome.
``js`
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',
});
}); chromeRender
> A 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
method support options:
- maxTab: number max tab chrome will open to render pages, default is no limit, maxTab used to avoid open to many tab lead to chrome crash. ChromeRender will create a tab poll to reuse tab for performance improve and resource reduce as open and close tab in chrome require time, like database connection poll.
- chromeRunnerOptions: object same as chrome-runner's options, can config chrome's startup options, detail see chrome-runner options####
chromeRender.render() method support options:
- url: string is required, web page's URL
- cookies: object {cookieName:cookieValue} is an option param. set HTTP cookies when request web page
- headers: object {headerName:headerValue} is an option param. add HTTP headers when request web page
- useReady: boolean whether use window.isPageReady=1 to notify chrome-render page is ready. default is false chrome-render use domContentEventFired as page has ready.
- script: string is an option param. inject script source to evaluate when page on load
- renderTimeout: number in ms, render() will throw error if html string can't be resolved after renderTimeout, default is 5000ms.
- deviceMetricsOverride: object overrides the values of device screen dimensions for responsive websites, detail use see here
- clearTab: boolean if true after render chrome instance will navigate to about:blank to free resources. default is true. setting to false may increase page load speed when rendering the same website.> all request from chrome-render will take with a HTTP header
x-chrome-render:${version}`