【问题标题】:Hapi.js what is the use of a plugin callback?Hapi.js 插件回调有什么用?
【发布时间】:2018-03-14 14:25:12
【问题描述】:

我是来自 express.js 的 hapi.js 的新手,我试图了解 hapi.js 插件概念和 express.js 中间件之间的区别(如果有的话)。在一些示例和教程中,我在插件注册中看到了回调。例如:

// load one plugin
server.register(require('myplugin'), (err) => {

    if (err) {
        console.error('Failed to load plugin:', err);
    }

    server.route({
        method: 'GET',
        path: '/test',
        handler: function (request, reply) {
           reply('test passed');
        }
    });
});

所以我的问题是:在插件注册的回调中声明休息路由与在外部声明此路由有什么用?

更一般地说,我想知道在 hapi.js 框架中执行插件与在 express.js 中执行中间件之间的区别(在 express.js 中,中间件在处理请求时一个接一个地执行,直到最后一个中间件被调用了,是不是和hapi.js中的方法一样?)

感谢您的回答

【问题讨论】:

    标签: express plugins routing middleware hapi.js


    【解决方案1】:

    hapi.js 中插件注册的顺序与请求生命周期无关。但是,您的插件可能需要按特定顺序声明,以解决依赖问题,以及在注册插件后是否需要运行一些代码。

    这里是一个需要这个回调的例子:

    server.register(require('hapi-auth-jwt'), err => {
     if (err) {
       console.log(err);
       return null;
     }
     server.auth.strategy('token', 'jwt', {
    
       key: process.env.JWT_SECRET,
    
       verifyOptions: {
         algorithms: ['HS256']
       }
     });
     server.register(/*other plugins*/)
    }
    

    还要记住,插件注册函数可以是异步的(只要你想调用next()

    hapi 的架构与 express 有很大的不同。您可以将其视为块(插件)而不是层(中间件)。它也是面向“代码配置”的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多