如何在 Hapi 中使用 SSR 渲染

阅读时长 5 分钟读完

什么是 SSR

SSR (Server Side Rendering),即服务端渲染。它通过在服务器上处理组件、应用程序和路由等内容,最终向客户端提供整个 HTML 页面以及相关的 CSS 和 JavaScript。与 SPA (Single Page Application) 不同,SSR 更加适合 SEO (Search Engine Optimization)、性能优化、首屏渲染速度以及可靠性方面。

为什么使用 Hapi

Hapi 是 Node.js 开发的用于构建 Web 应用程序的轻量级框架。相对于其它的 Node.js 框架,Hapi 更加注重安全性、可扩展性、插件化处理以及 API 的实时性。

在 Hapi 中使用 SSR

接下来,我们将会在 Hapi 中使用 SSR。首先,我们需要先安装两个依赖包:

依赖包 说明
react React 库
react-dom React 渲染库
@hapi/vision 使用 handlebars 作为模板引擎
@hapi/inert 处理静态文件
gluebell/tv tv 是 Hapi 针对 vision 扩展的插件

接着,我们需要创建一个名为 index.js 的文件,输入以下代码:

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

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

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

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

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

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

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

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

-------

其中,使用 @hapi/vision@hapi/inert 处理视图模板和静态文件,并且使用 gluebell/tv 扩展视图模板实现 SSR。此外,我们还创建了一个基本的路由 /hello,用于测试模板渲染。

views 目录下,我们需要创建一个名为 hello.html 的模板文件,输入以下代码:

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

其中,我们使用 {{ title }}{{ message }} 插值渲染视图,同时加载了 Bootstrap 样式库和客户端 bundle.js

最后,我们需要使用 reactreact-dom 创建客户端 bundle.js,将其添加到 /public 中。以下为示例代码:

其中,我们使用 reactreact-dom 创建应用程序,使用 ReactDOM.hydrate 渲染 DOM,其会在浏览器端完成 Vue 应用的初始化工作。

总结

本文主要介绍了如何在 Hapi 中使用 SSR 渲染。我们使用了 Hapi、react、react-dom 以及相关插件和库,最终实现了一个基本的应用程序。在实际开发中,我们可以进一步优化 Hapi 对路由的处理、部署和安全性等方面。

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

纠错
反馈