Hapi.js 是 Node.js 平台的一个轻量级、高度可定制的 Web 应用框架,由 Walmart 技术团队开发和维护。Hapi.js 提供了一组稳健、易于学习的 API,可以帮助开发人员构建可扩展和易于维护的 Web 应用。
插件和扩展点是 Hapi.js 框架的重要组成部分,对于开发人员来说,利用它们可以快速寻找复用组件、功能模块和工具等。本文将介绍如何使用 Hapi.js 的插件和扩展点。如果您是一个初学者,会从本文学会如何使用 Hapi.js 来构建 Web 应用。
插件
在 Hapi.js 中,插件是指通过将一个或多个功能模块封装成单个独立的模块来增强应用程序功能的组件。 Hapi.js 应用程序中,可安装不同的插件以实现不同的功能,例如:路由配置、数据库操作、认证、日志、缓存等。通过将应用程序分解为多个插件,可以提高代码可重用性,并使应用程序更易于测试和维护。下面是使用插件的示例代码,这里我们使用校验插件joi,该插件能帮助我们校验和验证请求参数和响应数据:
-- -------------------- ---- ------- ----- ---- - ---------------- ----- --- - --------------- ----- ------ - --- -------------- -- -- --- -------- ---------------------- -- ---- -------------- ------- ------- ----- -------------- ------- - --------- - -------- - --------- --------------------------------------- --------- --------------------------------------- - -- -------- --------- -- -- - -- ------ ------ - -------- ----- -------- ------- -- - - --- -- ----- ------------------ -- - -- ----- - ----- ---- - ------------------- ------- --- --------------------- ---
在上面的示例中,我们首先将Joi插件配置到服务器实例上,然后在路由配置中指定使用参数校验,这样在访问 /user/login
接口时,Hapi.js 会默认对请求参数进行校验,如果校验失败,则返回400错误。
扩展点
为了使 Hapi.js 可以扩展更多功能,框架提供了多个扩展点,方便开发人员定制适用于自己项目的扩展逻辑,如:路由扩展、请求生命周期钩子函数、插件封装等。下面我们将介绍 Hapi.js 支持的几个扩展点:
扩展服务器实例
在 Hapi.js 中,通过扩展服务器实例,可以实现自定义功能,如:添加通用前缀、自定义错误响应等。下面是使用扩展服务器实例的例子:
-- -------------------- ---- ------- ----- ---- - ---------------- ----- ------ - --- -------------- -- ------- ------------ ----- ------------ -- ------ ------- -------- --------- -- - -------------------- - ------------------ -- ------ ------ ----------- - --- -- ---- -------------- ------- ------ ----- --------- -------- --------- -- -- - ------ - -------- ------ --------- -- - --- -- ----- ------------------ -- - -- ----- - ----- ---- - ------------------- ------- --- --------------------- ---
在上面的代码中,我们通过 server.ext
方法添加一个 onRequest
类型的扩展点,为每一个请求动态添加 /v1
前缀,即所有的请求 URL 都将自动添加 /v1
前缀。
扩展路由
在 Hapi.js 中,通过扩展路由,可以实现路由级别的一些功能,如:缓存、认证、标签分类等。下面是使用路由扩展的示例:
-- -------------------- ---- ------- ----- ---- - ---------------- ----- ------ - --- -------------- -- ---- --------------------------- --------- -- -- - ----- -------- - ----------------- -- ---------------- -- -------------------------- -- ---- - ------ ------------------- - ------ ----------- --- -- ---- -------------- ------- ------ ----- --------- -------- --------- -- -- - ------ - -------- ------ --------- -- - --- -- ----- ------------------ -- - -- ----- - ----- ---- - ------------------- ------- --- --------------------- ---
在上面的代码中,我们通过 server.ext
方法添加一个 onPreResponse(type)
类型的扩展点,当路由响应返回的状态码为404时,自动重定向到 /404
页面。
总结
Hapi.js 提供了一组简单易用的 API,可以帮助开发人员构建可扩展和易于维护的 Web 应用,其中比较重要的两个概念是插件和扩展点,它们支持开发人员在框架基础上进行进一步的扩展和定制。在实际开发中,我们可以根据具体业务需求,充分利用 Hapi.js 提供的插件和扩展点,来实现更高效、更优秀的 Web 应用。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64812bd948841e9894096ef3