npm 包 prerenderer-webpack-plugin 使用教程

阅读时长 7 分钟读完

什么是 prerenderer-webpack-plugin?

prerenderer-webpack-plugin 是一个可以将你的单页面应用程序 (SPA) 预渲染成静态 HTML 的 webpack 插件。由于 SPA 的单页应用需要通过 JavaScript 动态生成页面,因此搜索引擎无法直接抓取其内容。预渲染则可以解决这个问题。

安装

首先,需要在项目中安装 prerenderer-webpack-plugin。你可以通过 NPM 进行安装:

使用

  1. 在 webpack 配置文件中引入插件
  1. 配置插件

在 webpack 配置文件中配置插件,以生成的 HTML 文件名为例:

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

说明:

  • staticDir 表示生成的静态HTML文件导出的目录,需为绝对路径;
  • routes 是需要生成静态 HTML 的路由,可以是一个数组,也可以是一个函数;
  • postProcess 是可选参数,用于对每个渲染后的 HTML 进行后处理。

如果你的 SPA 是纯静态内容(即不需要通过 Ajax/fetch 或其他 API 请求数据),则预渲染完成。但如果 SPA 包括异步获取数据的内容,则需要进行一些调整。

  1. 异步加载数据的预渲染

由于在 SPA 中,数据通常是通过 Ajax/fetch 请求获取的,并且这些请求是异步地发出的。在预渲染时,无法保证这些异步数据已经准备就绪。因此,需要在预渲染时加入一些工作,使得异步请求同步执行,以确保生成的页面可以正常显示所需的数据。

在 routes 数组中,可以为每个路由定义一个函数,用于生成每个路由相关的模板和 JSON 数据,以便进行数组的预渲染处理:

其中:

  • templatePath 是定义模板的路径;
  • json 是定义数据的路径。

然后,通过 onBeforeRender 选项来加载这些 JSON 数据:

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

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

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

这里使用了一个简单的 Promise,用于在渲染之前获取模板所需的数据,并存储在 data 变量中,以供模板使用。

示例代码

下面是一个完整的 webpack 配置文件,用于简单的 SPA,并包括异步数据加载。

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

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

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

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

结论

prerenderer-webpack-plugin 为前端开发人员提供了一种简单而有效的方法,通过预渲染 SPA,使搜索引擎能够直接抓取到网站的内容。这种方法对提升网站 SEO 优化非常有帮助。

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

纠错
反馈