chrome-render v1.4.1
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
install it from npm by
npm i chrome-rendernew a
ChromeRenderthen use it torendera web page, aChromeRendermeans 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
chromeRenderinstance can callrendermulti-times and concurrent for high frequency use case.chromeRenderwill manage a tabs pool torendermulti-pages concurrent.
- 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:
maxTab:numbermax tab chrome will open to render pages, default is no limit,maxTabused to avoid open to many tab lead to chrome crash.ChromeRenderwill 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:objectsame as chrome-runner's options, can config chrome's startup options, detail see chrome-runner options
chromeRender.render() method support options:
url:stringis required, web page's URLcookies:object {cookieName:cookieValue}is an option param. set HTTP cookies when request web pageheaders:object {headerName:headerValue}is an option param. add HTTP headers when request web pageuseReady:booleanwhether usewindow.isPageReady=1to notify chrome-render page is ready. default is false chrome-render usedomContentEventFiredas page has ready.script:stringis an option param. inject script source to evaluate when page on loadrenderTimeout:numberin ms,render()will throw error if html string can't be resolved afterrenderTimeout, default is 5000ms.deviceMetricsOverride:objectoverrides the values of device screen dimensions for responsive websites, detail use see hereclearTab:booleaniftrueafter render chrome instance will navigate toabout:blankto free resources. default istrue. setting tofalsemay increase page load speed when rendering the same website.
all request from chrome-render will take with a HTTP header
x-chrome-render:${version}
Friends
- chrome-render dependent on chrome-pool headless chrome tabs manage pool.
- chrome-runner run chrome with nodejs in code.
- koa-chrome-render chrome-render middleware for koa.
- koa-seo SEO middleware for koa base on chrome-render substitute for prerender.
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago