Hapijs路由注册模式
Hapijs route registration pattern
因为 "Inert" 插件现在必须单独加载。我想注册我的应用程序的路线。我有 2 个选择
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) {});
哪种方法更好/更标准化?或者有没有我不知道的第三种方式。
边问:另外,在server.js文件中调用路由函数/插件之前,是否应该先注册'inert'插件?
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文件中调用路由函数/插件前是否需要先注册'inert'插件?
是的,如果您使用 file
handler or the directory
处理程序,您需要确保首先加载惰性,否则在注册路由时会出错。
如果您选择在依赖于这些处理程序的插件中注册路由,您可以使用 server.dependency()
来表达这种依赖性并延迟注册路由,直到加载 inert。这意味着您不必关心在 server.register()
中列出插件的顺序。如果您使用大量插件或在大型 application/team.
上工作,这很有用
因为 "Inert" 插件现在必须单独加载。我想注册我的应用程序的路线。我有 2 个选择
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) {});
哪种方法更好/更标准化?或者有没有我不知道的第三种方式。
边问:另外,在server.js文件中调用路由函数/插件之前,是否应该先注册'inert'插件?
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文件中调用路由函数/插件前是否需要先注册'inert'插件?
是的,如果您使用 file
handler or the directory
处理程序,您需要确保首先加载惰性,否则在注册路由时会出错。
如果您选择在依赖于这些处理程序的插件中注册路由,您可以使用 server.dependency()
来表达这种依赖性并延迟注册路由,直到加载 inert。这意味着您不必关心在 server.register()
中列出插件的顺序。如果您使用大量插件或在大型 application/team.