iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 5
0
DevOps

Puppeteer系列 第 5

Puppeteer & 前後端共用 function

  • 分享至 

  • xImage
  •  

介紹

Puppeteer 可以自己定義一個function或是用第三方的function 到browser端使用

exposeFunction 會把後端的建立的 function 掛到 window 底下讓前端可以使用,
底下程式碼中把 onCustomEvent 監聽事件掛到前端的 window.onCustomEvent
,然後定義了一個 listenFor 使用 page.evaluateOnNewDocument 類似 middleware的方法,在建立完文件後被調用所以這邊就以使用剛剛後端 onCustomEvent 方法了

'use strict';
const puppeteer = require('puppeteer');
(async() => {

const browser = await puppeteer.launch();
const page = await browser.newPage();

await page.exposeFunction('onCustomEvent', e => {
  console.log(`${e.type} fired`, e.detail || '');
});
 
function listenFor(type) {
  return page.evaluateOnNewDocument(type => {
    document.addEventListener(type, e => {
      window.onCustomEvent({type, detail: e.detail});
    });
  }, type);
}

await listenFor('app-ready'); // Listen for "app-ready" custom event on page load.

await page.goto('https://www.chromestatus.com/features', {waitUntil: 'networkidle2'});

await browser.close();

})();

總結

Puppeteer 提供了exposeFunction 把後端的 lib或是 function可以讓前端使用大大提升了許多效能 ,同樣的語法也是非常的簡潔有力

官方範例

https://github.com/GoogleChrome/puppeteer/blob/master/examples/custom-event.js


上一篇
Puppeteer & 加快E2E測試與爬蟲速度
下一篇
Puppeteer & PDF & Proxy & Screenshot-Fullpage
系列文
Puppeteer30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言