将插件选项注入到单独文件中定义的 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