返回

前端神器-puppeteer搭建静态服务实战解析

前端

前言

最近在项目中遇到了海报渲染及生成pdf的需求,发现公司前端大佬搭建了一套静态化服务直接暴露出接口调用即可,简单过了一遍,里面掺杂着业务逻辑和其他功能没看太懂😂,但出于对于puppeteer的好奇,于是用了两个周末的时间自己搭建一套简单服务,本文主要目的是记录一次从0到1搭建基本渲染服务的全过程,方便后续继续完善服务的功能。

puppeteer简介

puppeteer是一个无头浏览器,它允许您在没有图形用户界面(GUI)的情况下控制浏览器。这意味着您可以使用puppeteer来自动化浏览器操作,例如访问网页、点击按钮、填写表单等。puppeteer与其他无头浏览器(如PhantomJS和Selenium)相比,具有以下优点:

  • 易于使用:puppeteer使用JavaScript API,因此很容易上手。
  • 性能优异:puppeteer是基于Chromium构建的,因此它具有很高的性能。
  • 支持多种平台:puppeteer可以在Windows、macOS和Linux上运行。

搭建静态服务

安装puppeteer

首先,我们需要安装puppeteer。您可以使用以下命令安装puppeteer:

npm install puppeteer

创建项目

接下来,我们需要创建一个项目。您可以使用以下命令创建一个项目:

mkdir my-puppeteer-project
cd my-puppeteer-project

创建package.json文件

接下来,我们需要创建一个package.json文件。package.json文件是Node.js项目的配置文件。您可以使用以下命令创建一个package.json文件:

npm init -y

安装必要的依赖

接下来,我们需要安装必要的依赖。我们可以使用以下命令安装必要的依赖:

npm install express body-parser

创建服务器

接下来,我们需要创建一个服务器。我们可以使用以下代码创建一个服务器:

const express = require('express')
const app = express()
const port = 3000

app.get('/', (req, res) => {
  res.send('Hello World!')
})

app.listen(port, () => {
  console.log(`Example app listening at http://localhost:${port}`)
})

使用puppeteer渲染页面

接下来,我们需要使用puppeteer渲染页面。我们可以使用以下代码使用puppeteer渲染页面:

const puppeteer = require('puppeteer')

async function renderPage(url) {
  const browser = await puppeteer.launch()
  const page = await browser.newPage()
  await page.goto(url)
  const html = await page.content()
  await browser.close()

  return html
}

创建渲染页面路由

接下来,我们需要创建一个渲染页面路由。我们可以使用以下代码创建一个渲染页面路由:

app.get('/render', async (req, res) => {
  const url = req.query.url
  const html = await renderPage(url)
  res.send(html)
})

运行服务器

最后,我们需要运行服务器。我们可以使用以下命令运行服务器:

npm start

测试服务

现在,我们可以测试服务了。我们可以使用以下命令测试服务:

curl http://localhost:3000/render?url=https://example.com

如果您看到页面内容,则说明服务运行正常。

puppeteer在静态服务中的应用场景

puppeteer在静态服务中有很多应用场景,例如:

  • 海报渲染:您可以使用puppeteer将动态内容渲染成静态海报。
  • 生成pdf:您可以使用puppeteer将动态内容生成pdf文件。
  • 网站截图:您可以使用puppeteer截取网站的截图。
  • 网页自动化:您可以使用puppeteer自动化网页操作,例如访问网页、点击按钮、填写表单等。

总结

本文介绍了如何使用puppeteer搭建一个简单的静态服务。puppeteer是一个非常强大的工具,它可以用于多种场景,例如海报渲染、生成pdf、网站截图和网页自动化等。希望本文对您有所帮助。