我刚刚开始使用 hapi.js,我喜欢请求生命周期事件,我读过的每个教程/指南都像这样显示它们:
server.ext('onPreResponse', (request, reply) => {
// ... these are great.
});
但显然,我不想将它们全部注册到主脚本的 server.register
中。我可以这样做:
const lifecycle = require('./server/lifecycle');
server.ext('onPreResponse', lifecycle.onPreResonse);
但是有没有办法进一步封装它,以保持我的主脚本精简并且......干净?
最佳答案
最有效的方法,也是首选方法,是将功能封装在插件中。不要将 hapi 插件视为传统的“插件”。它更多的是更好地封装代码的一种方法。
将代码组织到插件中可以为您做一些事情。
- 迫使您更严格地封装功能
- 使跨项目的代码重用变得更加容易
- 使您将所有功能加载到 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/