首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >hapi.js插件和nodejs模块有什么区别?

hapi.js插件和nodejs模块有什么区别?
EN

Stack Overflow用户
提问于 2014-11-18 01:01:51
回答 1查看 2K关注 0票数 3

刚开始熟悉哈皮。Hapi使用插件将组件添加到应用程序中。我很难理解为什么我会使用插件,而我只需要做这样的事情:

代码语言:javascript
复制
var lib = require('whatever lib from npm');

这两者有什么不同呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-18 01:44:11

Hapi插件也是节点模块,但它们是根据Hapi插件API构建的节点模块(它们公开了一个将插件注册到您的Hapi包/服务器的注册方法)。

插件可以自动向服务器添加路由,更改请求、有效负载和响应,并且通常可以更改Hapi的行为方式。

总之,插件是专门为增强Hapi而编写的节点模块。

让我们看看两个包loutLo-Dash。您可能知道,Lo-Dash模块是高性能的js工具集。lout是一个Hapi插件,将添加一个/doc路由到您的应用程序和。在npm上都可以找到,让我们从lout开始-

代码语言:javascript
复制
var Hapi   = require('hapi'),
    lout   = require('lout'),      
    server = new Hapi.Server(80);  

server.pack.register({ 
        plugin: lout
    }, function() {
        server.start();
    }
);

正如您所看到的,我们所需要做的就是在服务器包中注册lout,它的魔力对我们来说是可用的(一些插件将需要更多的选项)。

现在让我们在代码中使用lodash

代码语言:javascript
复制
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将没有任何意义,并将导致错误。所以这不管用-

代码语言:javascript
复制
server.pack.register({ 
        plugin: require('lodash')
    }, function() {
        server.start();
    }
);
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26984859

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档