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

aku*_*kuz 3 hapijs

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

方法一:

server.method("doSomething",
    function () {
        // Something
    });
Run Code Online (Sandbox Code Playgroud)

方法二:

server.app.doSomething = function () {
    // Something
};
Run Code Online (Sandbox Code Playgroud)

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

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

Kev*_* Wu 6

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

服务器方法

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

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
});
Run Code Online (Sandbox Code Playgroud)

服务器应用程序

提供一个安全的地方来存储特定于服务器的运行时应用程序数据,而不会与框架内部发生潜在冲突。只要可以访问服务器,就可以访问数据。用空对象初始化。

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

var handler = function (request, reply) {

    return reply(request.server.app.key);
};
Run Code Online (Sandbox Code Playgroud)