刚开始熟悉哈皮。Hapi使用插件将组件添加到应用程序中。我很难理解为什么我会使用插件,而我只需要做这样的事情:
var lib = require('whatever lib from npm');这两者有什么不同呢?
发布于 2014-11-18 01:44:11
Hapi插件也是节点模块,但它们是根据Hapi插件API构建的节点模块(它们公开了一个将插件注册到您的Hapi包/服务器的注册方法)。
插件可以自动向服务器添加路由,更改请求、有效负载和响应,并且通常可以更改Hapi的行为方式。
总之,插件是专门为增强Hapi而编写的节点模块。
让我们看看两个包lout和Lo-Dash。您可能知道,Lo-Dash模块是高性能的js工具集。lout是一个Hapi插件,将添加一个/doc路由到您的应用程序和。在npm上都可以找到,让我们从lout开始-
var Hapi = require('hapi'),
lout = require('lout'),
server = new Hapi.Server(80);
server.pack.register({
plugin: lout
}, function() {
server.start();
}
);正如您所看到的,我们所需要做的就是在服务器包中注册lout,它的魔力对我们来说是可用的(一些插件将需要更多的选项)。
现在让我们在代码中使用lodash
var Hapi = require('hapi'),
lout = require('lout'),
_ = require('lodash'),
preset = { app: { name: "myApp"}},
server;
if (process.env.DEBUG) {
_.extend(preset, {debug: {request: ['error']});
}
server = new Hapi.Server(80, preset);
_.extend(preset, { endpoint: '/lout'});
server.pack.register({
plugin: lout
}, function() {
server.start();
}
);在这里,如果我们在运行服务器时设置了调试环境参数,我们将使用lodash扩展服务器设置,并将服务器配置为将错误记录到控制台。请注意,lodash不知道我们的Hapi服务器以及它是如何工作的,它只是作为一个助手使用,程序员需要知道如何将它们缝合在一起。
使用lodash调用server.pack.register将没有任何意义,并将导致错误。所以这不管用-
server.pack.register({
plugin: require('lodash')
}, function() {
server.start();
}
);https://stackoverflow.com/questions/26984859
复制相似问题