Hapijs路线登记模式

时间:2015-09-22 09:37:22

标签: javascript node.js hapijs

作为" 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) {});

哪种方法更好/更标准化?或者有第三种方式我不知道。

方Q:另外,我应该注册' inert'在调用server.js文件中的route function / plugin之前插件?

1 个答案:

答案 0 :(得分:1)

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(...)
});

方Q:另外,我应该注册&#39; inert&#39;在调用server.js文件中的route function / plugin之前插件?

是的,如果您正在使用file处理程序或directory处理程序,则需要确保先加载inert,否则在注册时会出现错误路由。

如果您选择在依赖于这些处理程序的插件中注册路由,则可以使用server.dependency()来表示此依赖关系并延迟注册路由,直到加载惰性为止。这意味着您不必关心在server.register()中列出插件的顺序。如果您正在使用大量插件或在大型应用程序/团队中工作,则非常有用。