javascript - 如何在 Hapi.js 中封装请求生命周期事件?

标签 javascript node.js hapi.js

我刚刚开始使用 hapi.js,我喜欢请求生命周期事件,我读过的每个教程/指南都像这样显示它们:

server.ext('onPreResponse', (request, reply) => {
    // ... these are great.
});

但显然,我不想将它们全部注册到主脚本的 server.register 中。我可以这样做:

const lifecycle = require('./server/lifecycle');
server.ext('onPreResponse', lifecycle.onPreResonse);

但是有没有办法进一步封装它,以保持我的主脚本精简并且......干净?

最佳答案

最有效的方法,也是首选方法,是将功能封装在插件中。不要将 hapi 插件视为传统的“插件”。它更多的是更好地封装代码的一种方法。

将代码组织到插件中可以为您做一些事情。

  1. 迫使您更严格地封装功能
  2. 使跨项目的代码重用变得更加容易
  3. 使您将所有功能加载到 hapi 中变得更加清晰和直接。

以下是您的插件的示例:

exports.register = (server, options, next) => {

  server.ext('onPreResponse', (request, reply) => {
    // ... these are great.
  });

  next()
}

exports.register.attributes = {
  name: 'great-things',
  version: '1.0.0'
}

事实上,当我使用 hapi 构建网站时,我将所有功能放入 /app/plugins 目录中的插件中,然后根据需要将它们分解为单独的 Node.js 模块在不同的项目中重用它们。

关于javascript - 如何在 Hapi.js 中封装请求生命周期事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35756869/

相关文章:

javascript - Hapi js 和 Postman Chrome 应用程序 - 后续请求

javascript - 检查未指定的数组值在该数组中出现的次数

javascript - 从缓冲区中检索 FLOAT、DOUBLE、INT 或 BOOL 值

javascript - 在 NodeJS 中提供 mp3 文件以用于音频标签

javascript - 用于本地服务器端脚本调用的 Node.js Axios

javascript - 如何在 Mongoose MongoDb NodeJS 中获取数组中集合中的连接对象

javascript - 在完全渲染之前进行 Angular 复制几毫秒

c# - 如何在 ASP.NET MVC 验证期间提供警告?

javascript - 如何在 Visual Studio 2017 中使用 Web 应用程序发布独立的 Angular 组件 (njsproj)

redirect - Hapi.js 从 onRequest 重定向