page.evaluate Vs. Puppeteer $ methods

本文探讨了Puppeteer中evaluate、$eval和$$eval的区别,指出evaluate不仅性能更优,还便于调试。文章纠正了常见误解,强调evaluate在绑定函数方面的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前一直在用puppeteer, 一直没有研究evaluate$eval的区别,我使用的感觉是$eval$$eval更好用一点,代码比较清楚。因为有时候传递参数,函数的时候还是挺麻烦的,而且报错什么的也不太方便。直到今天看了这篇文章,才发现之前的想法有些问题,应该用evaluate, 除了性能会好之外,而且方便调试,直接粘贴到控制台就可以用。这样的话,其实绑定函数也就不是什么问题了。

参考:

https://stackoverflow.com/questions/55664420/page-evaluate-vs-puppeteer-methods

在Vue.js项目中,可以利用Puppeteer库来生成PDF文件。Puppeteer是一个Node.js库,它提供了一个高级API来控制Chrome或Chromium浏览器实例。以下是实现步骤: 首先,你需要安装`puppeteer``html2canvas`两个库,`html2canvas`用于将HTML内容转换为图像,然后Puppeteer负责生成PDF。你可以通过npm来安装: ```bash npm install puppeteer html2canvas --save-dev ``` 接下来,在你的Vue组件中,创建一个方法,例如`generatePdf`,并编写如下代码: ```javascript <template> <div id="content-to-print"> <!-- 你的HTML内容 --> <h1>Hello, Puppeteer PDF!</h1> </div> </template> <script> import puppeteer from 'puppeteer'; import html2Canvas from 'html2canvas'; export default { methods: { async generatePdf() { // 使用html2canvas获取DOM的内容 const canvas = await html2Canvas(document.getElementById('content-to-print'), { useCORS: true, onclone: (doc) => doc.body.removeChildren(), }); // 将canvas转换为image const imgData = canvas.toDataURL('image/png'); // 创建一个新的Puppeteer页面 const browser = await puppeteer.launch(); const page = await browser.newPage(); // 设置页面的viewport大小 await page.setViewport({ width: canvas.width, height: canvas.height, }); // 加载图片到页面 await page.evaluate((imgData) => { const img = document.createElement('img'); img.src = imgData; document.body.appendChild(img); }, imgData); // 等待页面加载完成,然后开始渲染 await page.waitForNavigation({ waitUntil: 'networkidle0' }); // 保存为PDF const pdfBuffer = await page.pdf({ path: 'output.pdf', format: 'A4', // 可自定义PDF尺寸 printBackground: true, // 含背景 }); // 关闭浏览器 await browser.close(); console.log('PDF generated successfully.'); }, }, }; </script> ``` 在这个例子中,我们先用`html2canvas`捕获DOM元素,然后在Puppeteer环境中打开一个新的页面,加载捕获的图片,并将其转换为PDF。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值