node-modules之hapi.js 插件和 nodejs 模块有什么区别

telwanggs 阅读:103 2024-09-07 23:24:14 评论:0

刚开始熟悉 Hapi。 Hapi 使用插件将组件添加到您的应用程序。我很难理解为什么我会在我可以做类似的事情时使用插件:

var lib = require('whatever lib from npm'); 

两者有什么区别?

请您参考如下方法:

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

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

简而言之,插件是专门为增强 Hapi 而编写的 Node 模块。

让我们看一下 loutLo-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 来扩展我们的服务器设置,并配置我们的服务器在运行服务器时设置 DEBUG 环境参数时将错误记录到控制台。 请注意,lodash 不知道我们的 Hapi 服务器及其工作原理,它只是用作帮助程序,程序员需要知道如何将它们拼接在一起。

使用 server.pack.register 调用 lodash 将没有任何意义,并且会导致错误。 所以这行不通-

server.pack.register({  
        plugin: require('lodash') 
    }, function() { 
        server.start(); 
    } 
); 


标签:NodeJs
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号