npm 包 prerenderer 使用教程

阅读时长 7 分钟读完

在前端开发中,我们经常会遇到 SEO(Search Engine Optimization)的问题。为了解决这个问题,我们可以使用可以让搜索引擎抓取并解析 JavaScript 网站的 prerender 策略,将静态 HTML 发送给搜索引擎。

prerenderer 是一个基于 Node.js 服务端渲染的工具,可以帮助我们将 Vue、React、Angular 等单页应用转换为静态 HTML 输出供搜索引擎抓取。本文将会对这个工具进行详细介绍,并提供示例代码以供参考。

安装

首先,我们需要安装 prerenderer。可以使用 npm 进行安装:

常用配置

prerenderer 可以用来处理单页应用及其路由,还可以处理静态或是动态转发路由。接下来让我们来看看配置中一些常用的选项:

routes

这里是一个简单的代码示例,用于展示 routes 配置:

-- -------------------- ---- -------
----- ----------- - -----------------------
----- -------- - -----------------------------
----- ------ - --------- --------- ------------

------ -- -- -
  --- ------ ----- -- ------- -
    ----- - ---- - - ----- ----------------------------
    ------------------
  -
-----

在这个代码片段中,我们创建了一个 prerenderer 渲染器实例,并配置了一个包含 '/home'、'/about' 和 '/contact' 三个路由的路由列表。使用 .renderRoute() 方法对路由进行预渲染。

prerender.port

这个选项用于配置 prerenderer HTTP 服务的监听端口。默认是 3000。

以下是一个使用默认端口 3000 的服务示例:

-- -------------------- ---- -------
----- ----------- - -----------------------
----- -------- - -----------------------------
----- --------- - ---------------------------

------------------

------------------ ----- ----- ---- -- -
  ----- - ---- - - ----- ------------------------------
  ------ ---------------------------
---

-----------------

prerender.timeout

这个选项用于配置 prerenderer 渲染器的超时时间,单位是毫秒。默认值是 20000 毫秒(即 20 秒)。

以下是一个示例,配合超时时间为 1000 毫秒的 prerenderer 渲染器:

-- -------------------- ---- -------
----- ----------- - -----------------------
----- -------- - ----------------------------
  -------- -----
---

------ -- -- -
  ----- - ---- - - ----- ------------------------------
  ------------------
-----

prerender.userAgent

这个选项用于配置 prerenderer 渲染器所使用的用户代理。

以下是一个示例,配置 User-Agent 为 Chrome 浏览器:

-- -------------------- ---- -------
----- ----------- - -----------------------
----- -------- - ----------------------------
  ---------- ----------------------
---

------ -- -- -
  ----- - ---- - - ----- ------------------------------
  ------------------
-----

第三方插件

除了上述常用配置选项之外,prerenderer 还支持各种插件和中间件。这就增强了 prerenderer 的功能和扩展性。

以下是一些推荐使用的第三方插件:

prerenderer-plugin-puppeteer

puppeteer 是一款由 Chrome 开发团队开发的 Node.js 库。它提供了对 Chrome 和 Chromium 浏览器的无头控制,用来模拟浏览器行为进行渲染。prerenderer-plugin-puppeteer 基于此,提供了更精准的渲染效果。

以下是一个使用 prerenderer-plugin-puppeteer 的示例:

-- -------------------- ---- -------
----- ----------- - -----------------------
----- ------ - ----------------------------------------
----- -------- - ----------------------------
  ------------------------- ------------
  -------- -----------
---

------ -- -- -
  ----- - ---- - - ----- ------------------------------
  ------------------
-----

prerenderer-plugin-wait-for-element

prerenderer-plugin-wait-for-element 插件可用于等待页面中的某个特定元素出现才进行渲染。

以下是一个使用 prerenderer-plugin-wait-for-element 插件的示例:

-- -------------------- ---- -------
----- ----------- - -----------------------
----- ------ - -----------------------------------------------
----- -------- - ----------------------------
  ------------------------- ------------
  -------- -
    --------
      --------- -----------
    ---
  --
---

------ -- -- -
  ----- - ---- - - ----- ------------------------------
  ------------------
-----

总结

本篇文章简要介绍了 npm 包 prerenderer 的使用教程。我们见到了 routes、prerender.port、prerender.timeout、prerender.userAgent 等常用配置。

同时也提到了可扩展的选项,如使用第三方插件以实现定制化的渲染效果。我们鼓励您去查阅官方文档以了解更多信息。

一个较完整的示例代码:

-- -------------------- ---- -------
----- ----------- - -----------------------
----- ------ - ----------------------------------------
----- -------- - ----------------------------
  ------------------------- ------------
  -------- -----
  ---------- ----------------------
  -------- -
    ---------
  --
---

----- --------- - ---------------------------

------------------

------------------ ----- ----- ---- -- -
  ----- - ---- - - ----- ------------------------------
  ------ ---------------------------
---

-----------------

使用这个代码,我们可以在本地启动一个 prerenderer 的 HTTP 服务,监听本地 3000 端口。该服务将使用 Puppeteer 渲染来自机器上的单页应用,并可拦截路由动态转发。用户代理将被设置为 Chrome。

最后,我们希望您能够在生产环境中使用这个工具,并将其应用到您的项目中,以帮助您的产品更好地被搜索引擎收录和排名。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6005730881e8991b448e933b

纠错
反馈