Hapi服务器方法与server.app.doSomething

时间:2015-04-10 13:15:56

标签: hapijs

我正在编写一个hapi js插件,并想知道其他插件可以使用的两种暴露方法之间的区别是什么。

方法1:

server.method("doSomething",
    function () {
        // Something
    });

方法2:

server.app.doSomething = function () {
    // Something
};

在第一种方法中,稍后可以将该函数称为server.doSomething(),而将第二种方法称为server.app.doSomething()。

那么我为什么要用一种方式而不是另一种呢?

1 个答案:

答案 0 :(得分:4)

查看API文档,听起来他们希望将server.methods用于函数,并将server.app用于应用程序设置/配置。我猜你应该坚持使用server.method,如果你想暴露你的插件中使用的服务器级方法。

  

server.methods

     

提供对每个服务器的服务器方法的访问的对象   方法名称是对象属性。

var Hapi = require('hapi');
var server = new Hapi.Server();

server.method('add', function (a, b, next) {

    return next(null, a + b);
});

server.methods.add(1, 2, function (err, result) {

    // result === 3
});
     

server.app

     

提供存储特定于服务器的运行时应用程序的安全位置   数据没有与框架内部的潜在冲突。该   只要服务器可访问,就可以访问数据。初始化   用空物体。

var Hapi = require('hapi');
server = new Hapi.Server();
server.app.key = 'value';

var handler = function (request, reply) {

    return reply(request.server.app.key);
};