我正在编写一个hapi js插件,并想知道其他插件可以使用的两种暴露方法之间的区别是什么。
方法1:
server.method("doSomething",
function () {
// Something
});
方法2:
server.app.doSomething = function () {
// Something
};
在第一种方法中,稍后可以将该函数称为server.doSomething(),而将第二种方法称为server.app.doSomething()。
那么我为什么要用一种方式而不是另一种呢?
答案 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); };