由于"Inert"插件现在必须单独加载。我想注册我申请的路由。我有两个选择
1)导出一个以"server"为参数的函数,并将代码写成
module.exports = function(server) {
server.register('inert', function(err) {});
server.routes([....]);
}
然后在server.js中调用它作为require('./routes.js')(serverObj)
2)导出路由机制为hapi插件
exports.register = function(server, opts, next) {
server.register('inert', function(err) {});
server.routes([....]);
next();
}
并从server.js调用它作为server.register(require('./routes.js'), function(err) {});
哪个是更好/更标准化的方法?或者还有我不知道的第三种方法。
Side Q:另外,在server.js文件中调用路由函数/plugin之前,我应该注册"惰性"插件吗?
server.route()
可以传递一个路由数组,因此您可以简单地将路由导出为数组:
routes.js
module.exports = [
{
method: 'GET',
path: '/',
handler: function (request, reply) {
...
}
},
...
];
然后在主应用程序设置时需要这个文件:
index.js
server.register(require('inert'), function (err) {
if (err) {
throw err;
}
server.route(require('./routes'));
server.start(...)
});
Side Q:另外,在server.js文件中调用路由函数/插件之前,我应该注册'惰性'插件吗?
是的,如果你正在使用file
处理程序或directory
处理程序,你需要确保惰性是首先加载的,否则你会在注册路由时得到一个错误。
如果你选择在一个依赖这些处理程序的插件中注册路由,你可以使用server.dependency()
来表示这个依赖,并延迟注册路由,直到惰性加载。这意味着你不必关心你在server.register()
中列出插件的顺序。