我刚刚开始使用hapi.js而且我喜欢请求生命周期事件,我读过的每个教程/指南都是这样的:
server.ext('onPreResponse', (request, reply) => {
// ... these are great.
});
但显然,我不想在我的主脚本server.register
中注册所有内容。我能做到:
const lifecycle = require('./server/lifecycle');
server.ext('onPreResponse', lifecycle.onPreResonse);
但是有没有办法进一步封装这个,以保持我的主要脚本精益,而且......干净?
答案 0 :(得分: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模块,如果我需要在不同的项目中重用它们。