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

Hapi server methods vs server.app.doSomething

我正在写一个 hapi js 插件,想知道其他插件可以使用的两种公开方法的区别是什么。

方法一:

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

方法二:

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

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

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

查看 API 文档,听起来他们打算 server.methods 用于函数,server.app 用于应用程序 settings/configuration。我的猜测是,如果您想公开要在插件中使用的服务器级方法,您应该坚持使用 server.method。

server.methods

An object providing access to the server methods where each server method name is an object property.

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

Provides a safe place to store server-specific run-time application data without potential conflicts with the framework internals. The data can be accessed whenever the server is accessible. Initialized with an empty object.

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

var handler = function (request, reply) {

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