如何在 Hapi 框架中实现服务器端渲染 (SSR)

阅读时长 4 分钟读完

什么是服务器端渲染 (SSR)?

服务器端渲染 (Server-side Rendering, SSR) 是指将页面所有的数据都在服务器端生成,并将最终生成的 HTML 直接返回给浏览器进行展示,这样可以大大减少浏览器的工作量,提高网站的性能和用户体验。

相对于客户端渲染 (Client-side Rendering, CSR) 来说,服务器端渲染具有以下优点:

  • 更快的首屏加载速度,避免了浏览器加载 JS 脚本、请求接口等过程
  • 更利于 SEO,可以使搜索引擎抓取到完整的页面内容
  • 更友好的用户体验,避免了大量的白屏时间和页面卡顿现象

Hapi 框架简介

Hapi 是一个基于 Node.js 的 Web 框架,它专注于构建可扩展的应用程序。通过 Hapi 提供的插件机制,可以轻松地扩展路由、数据处理、缓存、认证等各种功能。

在 Hapi 框架中实现 SSR

Hapi 提供了视图引擎 View 插件,可以在服务器端渲染基于 Handlebars、EJS、Pug 等模板引擎的视图文件。我们可以利用这个插件来实现 SSR。

安装和配置

首先,需要安装 Hapi 和 View 插件:

然后,在 Hapi 的初始化配置中添加 view 配置项,并注册 View 插件:

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

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

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

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

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

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

-------

其中,engines 配置项指定了视图文件所使用的模板引擎,这里我们使用了 Handlebars;relativeTo 配置项指定了视图文件所在文件夹相对于项目根目录的路径;path 配置项指定了视图文件所在的文件夹。

编写视图文件

接下来,按照 Handlebars 模板引擎的语法编写视图文件,例如 views/index.hbs

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

编写路由

在 Hapi 中,路由可以使用 server.route() 方法添加。我们需要为 / 路径添加一个路由,用于渲染 index.hbs 视图文件,并将需要渲染的数据传递给视图文件:

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

在该路由中,h.view() 方法将以 views 配置项中指定的路径为基础,拼接上第一个参数 index,找到 views/index.hbs 视图文件,并将第二个参数对象 {title: 'Hapi SSR Demo', message: 'Hello, World!'} 作为渲染视图的数据源。

运行应用程序

保存以上代码为 app.js 文件,在命令行中执行 node app.js 命令启动应用程序,然后在浏览器中访问 http://localhost:3000,就可以看到服务器端渲染的页面内容了。

总结

通过对 Hapi 框架的视图引擎 View 插件的使用,我们可以方便地实现服务器端渲染 (SSR),提高网站的性能和用户体验。要使用 Hapi 框架实现 SSR,需要掌握 Handlebars 模板引擎和 Hapi 的路由机制,但是由于 Hapi 提供的插件机制十分灵活,所以也可以根据自己的实际情况选择自己熟悉的模板引擎来实现 SSR。

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

纠错
反馈