将插件选项注入到单独文件中定义的 Hapi 路由处理程序的模式
Pattern for injecting plugin options into Hapi route handlers defined in separate files
我正在开发我的 Hapi 应用程序插件,我的路由保存在一个单独的文件中,与执行插件 server.route
调用的文件不同。此外,这些路由的处理程序也在单独的文件中。例如
- plugin.js
- routes.js
- handlers/
- route1.js
- route2.js
plugin.js
类似于....
const routes = require('./routes.js')
...
server.route(routes)
routes.js
类似于 ...
module.exports = [
{
method: 'GET',
path: '/route1',
handler: require('./handlers/route1')
},
...
]
并且处理程序文件导出带有签名 (request, h)
的函数。
我的路由处理程序(及其他)需要访问在插件注册时传入的选项,但他们只能访问 (request, h)
我可以用将 options
带入范围的函数包装路由定义和每个路由处理程序,但这感觉就像定义关于项目结构的约定和民间传说,而且我觉得这可能会导致问题Javascript scoping/closure 古怪。
是否有一个通用的 Hapi library/pattern 允许我将插件选项注入路由处理程序,例如允许以干净或定义明确的方式使用 (request, h, options)
这样的签名?
所以我发现工具包对象上的插件选项如下...
h.realm.pluginOptions
我正在开发我的 Hapi 应用程序插件,我的路由保存在一个单独的文件中,与执行插件 server.route
调用的文件不同。此外,这些路由的处理程序也在单独的文件中。例如
- plugin.js
- routes.js
- handlers/
- route1.js
- route2.js
plugin.js
类似于....
const routes = require('./routes.js')
...
server.route(routes)
routes.js
类似于 ...
module.exports = [
{
method: 'GET',
path: '/route1',
handler: require('./handlers/route1')
},
...
]
并且处理程序文件导出带有签名 (request, h)
的函数。
我的路由处理程序(及其他)需要访问在插件注册时传入的选项,但他们只能访问 (request, h)
我可以用将 options
带入范围的函数包装路由定义和每个路由处理程序,但这感觉就像定义关于项目结构的约定和民间传说,而且我觉得这可能会导致问题Javascript scoping/closure 古怪。
是否有一个通用的 Hapi library/pattern 允许我将插件选项注入路由处理程序,例如允许以干净或定义明确的方式使用 (request, h, options)
这样的签名?
所以我发现工具包对象上的插件选项如下...
h.realm.pluginOptions