【问题标题】:Hapi server methods vs server.app.doSomethingHapi 服务器方法与 server.app.doSomething
【发布时间】:2015-04-13 06:09:35
【问题描述】:

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

方法一:

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

方法二:

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

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

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

【问题讨论】:

    标签: hapijs


    【解决方案1】:

    查看 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);
    };
    

    【讨论】:

    • 虽然它没有真正回答,但在功能方面我为什么要使用一个来对抗另一个,但我认为这是一个“约定问题”......
    • 可能与在同一应用程序中运行的其他 Hapi 服务器的范围不同?我一直在想和 op 一样的问题,这是我见过的最好的答案,尽管没有真正回答“为什么一个与另一个”的问题:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-04
    • 2015-03-01
    • 1970-01-01
    • 2022-10-15
    相关资源
    最近更新 更多