Hapi.js 插件详解:hapi-router

阅读时长 6 分钟读完

如果你正在寻找一个高效的路由插件来优化你的 Hapi.js 应用程序,那么 hapi-router 插件是一个不错的选择。

什么是 hapi-router?

hapi-router 是一个 Hapi.js 插件,它简化了路由的创建和管理。采用 hapi-router 插件可以轻松创建和维护复杂的路由,并且改善了应用程序的结构。

安装 hapi-router

安装 hapi-router 的方法如下:

使用 hapi-router

在使用 hapi-router 插件之前,首先需要确保你已经正确安装了 Hapi.js 和 hapi-router。

定义路由

hapi-router 通过自动化路由定义,使这项工作变得更加容易。你可以在定义各种路由时,通过在目录结构中使用标记,在路由上下文中添加额外的元数据。这种方法有助于您在应用程序的不同部分之间快速切换。

这里是一个基本路由定义的例子:

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

你可以通过以下方式使用上面定义的路由:

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

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

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

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

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

上面的示例展示了一个如何在 Hapi.js 应用程序中使用 hapi-router 的通用用途。

插件配置对象必须传递一个 routes 参数,它定义了要应用于使用 hapi-router 的所有路由的前缀。我们在这里使用 prefix 属性将路由前缀设置为 /api/v1。

options 对象还接收用于指定处理程序的路由文件位置,文件路径的格式采用任何从 glob 式样兼容的方式来支持多个定义。在本例中,路由配置保存在 ./routes/**/* .js 中。

嵌套路由

通常,应用程序中的路由很容易分为多个路由处理程序。使用 hapi-router,你可以将这些路由定义分解为单独的文件,然后将这些文件与主路由文件合并。这种设计模式有助于让你掌握应用程序的结构,并在多个独立路由处理程序之间更轻松地进行切换。

我们可以构建一个像这样的嵌套路由:

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

再次更新主服务器文件:

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

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

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

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

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

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

在上面的示例中,我们创建了 src/routes/api.js,其中包含两个路由。接下来,我们在 src/routes/index.js 中创建组路由,该路由将在 /api 路径下提供关联的 api 路由。

在主服务器中,我们可以将主页路由放置在单独的 server.route() 调用中,并使用 server.register() 方法将 hapi-router 插件与我们的应用程序一起使用。

路由处理函数

在 hapi-router 中,你可以使用封装在路由定义对象中的所有处理函数。下列这些属性都可以存在于路由定义对象中:

  • config - 封装在每个路由中的配置信息。
  • handler - 定义在路由上下文中的处理函数。
  • validate - 当值被提供时,定义一个 Joi Schema 以校验请求参数。
  • bind - 在路由处理函数中定义 this 上下文。
  • description - 路由的描述信息。

总结

使用 hapi-router 插件,我们可以更轻松地定义和管理路由。我们可以将路由定义存储在单独的文件中,这有助于在不同的路由处理程序之间轻松切换。我们也可以在路由定义上下文中使用元数据,并使用路由上下文中默认封装的处理函数。

因此,这些是您应该知道的 hapi-router 插件的基础知识,这是 Hapi.js 开发的一个强大工具。需要注意的是,这只是 hapi-router 提供的功能的冰山一角,你可以通过阅读官方文档来深入了解。

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

纠错
反馈