2015-09-22 109 views
0

由于“Inert”插件现在必须单独加载。我想注册我的应用程序的路线。我有2个选择Hapijs路由注册模式

1)导出函数,采用“服务器”作为参数,并编写代码为

module.exports = function(server) { 
    server.register('inert', function(err) {}); 

    server.routes([....]); 
} 

,简单地从server.js称其为require('./routes.js')(serverObj)

2)导出路由机制为高致病性禽流感插件

exports.register = function(server, opts, next) { 
    server.register('inert', function(err) {}); 

    server.routes([....]); 

    next(); 
} 

,并从server.js称呼其为server.register(require('./routes.js'), function(err) {});

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

Q方面:另外,我应该在server.js文件中调用路由函数/插件之前注册'inert'插件吗?

回答

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

Side Q:另外,我应该在server.js文件中调用路由功能/插件之前注册'inert'插件吗?

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

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